Arcadian, Volume 1, Issues 01 through 11 combined

OCR'ed and cleaned up
by Richard C. Degler
on February 16, 2011
through March 3, 2011
[note: _underscore_]


========================= [arcadian Vol. 1, Issue 01] =========================
Page 1 - [numbers originally centered at the bottom of each page.]

                        ARCADIANS
                        ---------
[Volume I, Issue 1]                                          Nov. 6, 1978

     Since this is the 'premier' issue in the subscriber format, I thought
a few words about myself would be in order.  Right off, I'm not the best
typist, so bear with me.  My interest in computers lies in the hobby-home
area, with 110v AC control, lists, conference calling, and such being of
prime concern.  I work for Lockheed Missiles & Space Co, doing interface
engineering, which is a four dollar word for making sure things go together.
I have access to a Tektronix 4051, a _basic_ language desktop unit with lots
of capability and off-line accessories.  My other hobby pursuits lie in model
railroading, N scale using heavy electric locos, and a collection of high-
performance radio receivers, epitomized by E.H. Scott radios.  As a ham,
I have some knowledge of electronics, and am self-tought in the area of
computers.  I certainly don't understand all I know, and am acting as a
reporter in this Arcadian endeavor.

FORMAT will settle down after a while, right now it will be somewhat
mixed up.

SUPPLIER of Bally equipment in Ohio is DigiTrends, Inc. located at
1813 E. 12 St. Cleveland 44114, who tell me they plan to be a compre-
hensive source.

FOOTBALL cartridge is now going into production.  It takes 6 - 12 weeks
for the chips to be produced, so they may be out by the holidays.

ADD-ON will be on display at the Las Vegas electronics show in January,
It is planned to have the unit working with a disc memory and with a
printer at the show, but there is also a rumor that the mass memory
device will be a cassette-loaded RAM.

BALLY is taking the novel approach (at least in the hobby computing industry)
of planning to identify what non-Bally equipment will work with the base units,
with little or no modification.  Any such discoveries on your part may be
mutually beneficial.

DESIRES by correspondents are listed below.  There are a few things that
will take a lot of work, but eventually...  If you can help out in any of
these work areas, we can set up a project system and publicize the efforts
of a team that would result.   These are in no particular order.
     voice control          direct TV entry          RS 232 interface
     telephone modem        video tape recorder control for storage
     TTY interface          chess games              interactive games
     computer conferencing                           word processing
     direct 'toy organ' keyboard entry

JS&A has not shipped any hardware lately.  What has been shipped is a pair
of letters to their mailing lists, one to owners of the basic unit and the
other to those still waiting.  A copy of each is enclosed for your info.

-------------------------------------------------------------------------------
Page 2 -

This is a copy of the letter that was sent to those who have yet to receive
the machine:

                                              (312) 564-9000 Telex: 72-4498

JS&A NATIONAL SALES GROUP [logo]
One JS&A Plaza, Northbrook, Illinois 60062


Dear Customer:

     As you are well aware, there has been a delay in the shipment of your
Bally unit.

     The delays have been caused by almost every problem imaginable and have
lasted almost one year now.  Bally, however, is now in full production,
and there appears to be no production problems.

     In addition to the delays, there are serious doubts in our mind as whether
Bally will produce the add-on module we referred to in our advertisements.

     Bally refuses to make a commitment to us to produce the add-on module,
and they indicate that if they do proceed with the system, it won't be until
June, 1979 when their unit will be available.  Even the cost of the system is
yet undetermined but is estimated to be around $600 -- well above the price
they led us to believe the unit would cost

     Bally feels 90% positive that they will complete their commitment to us
despite their reluctance to sign a definitive agreement.  JS&A, on the other
hand, refuses to continue a business relationship with them, without the
positive assurances that the add-on module will indeed be produced soon.

     Every fact presented in our advertising literature was verified by the
Bally organization prior to its publication.  We tried our best to offer what,
in our opinion, was the best product of its kind on the market, but the Bally
organization let us down.

     In the course of trying to get a commitment from Bally, JS&A was
approached by a major US Corporation whose name is more recognizable than
Bally's.  The company has come up with a similar concept to Bally's using a
two part system -- part A similar to the basic Bally unit and part B similar
to the add-on module.

     The part A has been developed and FCC approved.  Part B will be ready in
February.  We feel that their part A far exceeds Belly's basic unit and that
their part B will be very similar to Bally's add-on module.  Prices are quite
competitive to Bally's prices.

     This major Corporation has asked us to keep their name confidential
until we are ready to introduce their product nationally sometime in January.
We feel a great deal of confidence that the new unit will be right on time as
we have already been given firm commitments as to delivery, something we have
yet been unable to do with Bally.

     Prior to our national introduction, we wish to give you the opportunity
to select the new unit which, in our opinion, has several advantages over the
Bally unit.

     We will hold your order and advise you in December, prior to our national
announcement.  We will offer you, in advance of our introduction, the
opportunity to purchase the new unit at a price below what we intend to offer
it nationally, and we feel confident that our promises to you will be backed
by a very responsible and competent manufacturer.

     If, when the new unit is announced, you would rather purchase the Bally
unit, we will he happy to supply it to you but without a firm commitment to
supply the add-on module from Bally.

     In either case, we are indeed sorry for the delay and inconvenience
caused you. Enclosed is a questionnaire and postage-paid reply envelope so you
may express your decision to us regarding our offer.  We would appreciate it
if you would fill out the questionnaire and return it in the enclosed envelope
so we may determine your intentions.  Again, thank you for your patience,

                                              Sincerely,

                                              JS&A NATIONAL SALES GROUP
                                              [signature of...]
                                              William Mitchell
                                              Group Marketing Director
WM/ms

-------------------------------------------------------------------------------
Page 3 -

This is a copy of the letter that was sent to previous recipients of the
machine:

                                              (312) 564-9000 Telex: 72-4498

JS&A NATIONAL SALES GROUP [logo]
One JS&A Plaza, Northbrook, Illinois 60062

[stamped as Received on:] OCT 16 1979


Dear Customer:

     We trust you have your Bally Home Library Computer and have found it
quite satisfactory.

     Very shortly, Bally will be releasing some of their new game cartridges
and educational programs, and we plan to advise you of those upon their
release.

     You've no doubt realized that practically the entire Bally program has
been delayed.  The problems with production, FCC approval delays, and late
delivery of parts are past and we don't want to rehash history.

     We clearly made a mistake by offering the basic unit in advance of seeing
an actual production model.  And quite frankly, we've never experienced a
backorder problem like the one we've had with this unit.

     Because of this bad experience with the Bally unit, we have been quite
concerned with Bally's future plans concerning the add-on module.  To assure
our customers of a reasonable delivery date, we requested, long ago, that
Bally supply us with a firm commitment to supply us with the add-on module
along with its final price and features.

     The delays in the basic unit caused Bally to delay any commitment to
produce the add-on module for us.  We have therefore taken the position with
Bally that if they do not produce the unit, they permit us to manufacture it
ourselves to assure our customers of our commitments to them.  Bally has
agreed and we are presently working out a final agreement in this regard.

     Bally has reassured us that although they are not willing to make a
firm commitment to us, they do feel 90% confident that they will definitely
go through with the production of the unit.  However, they have further
advised us that:

1) The add-on module will not be available until June of next year.

2) The cost will be higher than they led us to believe -- probably around $600.

3) The unit will have more features than was originally proposed.

     The purpose of this letter is to advise you of the circumstances regarding
the delay of the add-on module and the information that we have been receiving
from Bally.

     We were told by Bally representatives that all the statements we made
in our advertisements were correct.  Because of delays and (in our opinion)
inexperience on their part, they have obviously let us down.  We feel it our
obligation to advise you and question your interest in the add-on module.

     It is not our intention to get into a legal battle with Bally.  We feel
that by cooperating with them, in the event that they do not produce the add-on
module, we can still protect our customers' interests by producing the unit
ourselves.

     When the unit is available, because of its higher price, we will discount
it as low as possible to provide the unit to you at the price we originally
quoted you or as close to it as possible.  And we will do all we can to advance
the June delivery date.

     We have already seen a working prototype of the add-on module.  We fully
intend to sell it and Bally feels that they will proceed, but we also felt it
our obligation to advise you of the reason for the delays and to give you a
true picture of the events surrounding this matter.

     We need your commitment to us regarding your desire to purchase the add-on
module so that we may reserve production time with Bally.  Would you please jot
down the answers to the questions listed and return them in the postage paid
return envelope.  If no answer is received, we will assume that you are not
interested in the add-on module.

     If you have any thoughts, feel free to jot them down on the enclosed
questionnaire and we will make sure the Bally representatives see them.
Thank you for your cooperation and we sincerely appreciate your patience.

                                              Sincerely,

                                              JS&A NATIONAL SALES GROUP
                                              [signature of...]
                                              William Mitchell
                                              Group Marketing Director

-------------------------------------------------------------------------------
Page 4 -

PROJECTS known to be in work include:
  - a breakdown of the cassette interface circuit board and chip data.
    an understanding of this circuit will make it possible to construct
    a telephone modem.
  - half-size lettering on the screen.
  - 3-voice music
  - effort to include decimal notation in the TBASIC
  - a read-out of the information on the game cartridges

INSIDES of the TBASIC are becoming visible.  Three known control characters
are the @ & and %
     % is the PEEK command - this is being worked on now, more later
     @ gives string constants  Try this program
                 10 CLEAR              You will get a bunch of ??? as A
                 20 A=0                progresses from 0 to about 26.  Then
                 30 TV=A               from there to about 120 you will
                 40 @(A)=A             get the character, then???to cycle
                 50 PRINT "A"          until 874 is reached.  But one member
                 60 A=A+1              writes that he has 887 strings.
                 70 GOTO 30
     & does all kinds of things.  I am going to duplicate parts of a letter
just received that has a few things to keep you busy for a while...

MEANWHILE, here are some questions/answers
  * Can I add an IBM-compatible floppy disc system?  All I know is that
    Bally has a floppy disc prototype that was seen with the Add-On
  * Is this computer S-100 compatible?  No, it is supposed to be IEEE.
  * Does the cassette come with the computer?  No, the arrangements differ,
    as follows: with Tiny BASIC, you buy the #6002 TinyBASIC cartridge
    that plugs into the game slot.  The machine is now self-contained.
    To add storage, buy a #10 INTF cassette interface that plugs into the
    right-most hand controller connector and the lightpen power plug.
    It also plugs into your portable recorder (or buy a #M2522) List
    prices of these are $49.95, $49.95, and $55. as of this date.
    with the Add-On, the cassette interface will be built in, and then
    you just plug in your own player.
  * WHICH reminds me that BALLY has told me that the problem I had writ-
    ten about last time, where I was having difficulty loading a tape
    made on one recorder through a different recorder, has been fixed,
    and all interfaces should work with 99% of recorders.
  * Does graphics use SET (x,y) or a PRINT statement?
    There are two commands, LINE and BOX.  LINE X,Y draws a line from
    where you are to the new point x,y.  You can draw a line in white, black,
    none (just to move the cursor), and reverse (where the line is black
    or white depending on what the background is).  The center of the
    screen is 0,0 with four quadrants.  The x dimension is from -80 to 79,
    while y is from -44 to 43.  BOX draws a square or rectangular box
    around a point, with the same color arrangements.
  * Does the original unit have any cassette WRITE ability?  No, the
    TinyBASIC provides the access through the :INPUT command.

EXCERPTS included herein identify some areas of research that any of us
can do at our TinyBASICS.  Try everything and if you get different responses,
let us know.  I'd appreciate everything of this nature to be typed or
neatly printed so that direct reproduction is possible.  Also, I may
eventually go to a reduced size, such as the included letters.  Any comment?

THANKS for your support.  The subscription sheet is enclosed this time.

-------------------------------------------------------------------------------
Page 5 -

              10 For A=0to 174
              20 &(10)=A
              30 Next A

List it a couple of times to fill the screen with words, run it, watch the
words disappear and then from top to bottom uncover _one-half a pixel_ at a
time!  Put in a timer loop to slow the action down.  A great tool for games
where one can squeeze the trigger of the hand controller and the screen will
blank out or rotate the knob and turn the screen on or off in layers.


I had a couple of professional programmers from the University where I work
stop by yesterday to look at the Bally and TB and they were intrigued by the
above.  They had both seen TB at the computer faire in Anaheim earlier this
year and were very impressed by the power and potential of the Bally.  Anyhow,
it wasn't long until they got into the more serious side of &(n)=n statements.
For instance, they found that the keyboard is configured as follows:

                      23  22  21  20   <--- M: Keypad input (only) port number
Try this:            +---+---+---+---+
                     [_1_|_1_|_1_|_1_]      &(M)=N appears to set output
10 PRINT &(23)       | 2 | 2 | 2 | 2 |      decimal port #M to the value of N
20 GOTO 10           |__7.__8.__9.___|       [there's no write examples here!]
                     | 4 | 4 | 4 | 4 |      and... N=&(M) appears to read the
* Run the program.   |__4.__5.__6.___|      value of the M input port into the
In turn press each   | 8 | 8 | 8 | 8 |      variable N.   [good assumptions!!]
key in the left hand |__1.__2.__3.___|
row and see the      |16 |16 |16 |16 |             +------+
appropriate #'s      |___|__0.___|___| <--- where: |value |
appear.              [32 |32 |32 |32 ]             |___key.
                     +---+---+---+---+      (only Basic overlay numbers shown)

So, &(23) [returns] 1 if the "GO" key is depressed [was '=' meaning a write],
and &(20) [reads a] 32 [known as a function] if the "WORDS" key is depressed.

They also discovered that n=&(k) where k is 28 for knob on controller 1
                                            29 for knob on controller 2
[These were both port writes, not reads!]   30 for knob on controller 3
                                            31 for knob on controller 4
and that n is from O (clockwise) to 255 (counterclockwise)          (17)
                                                             (21)    1    (27)
Joystick and trigger use n=&(j) where j is 16 for joystick 1     5   ^   9
                                           17 for joystick 2      \  |  /
Use this program for checking out your     18 for joystick 3       \ | /
controller joystick operation to see that  19 for joystick 4        \|/
it functions in all positions:         ,--->               (20) 4<---x-->8 (24)
     10 &(l6) = 5x(1) [write TONMO?]  /    n is 1 for up            /|\
     20 PRINT &(l6)                   |         2 for down         / | \
     30 GOTO 10                       |         4 for left        6  v  10
                                      |         8 for right   (22)   2    (26)
Pulled triggered #'s in () + moved ---'                            (18)
joystick combination.                      and 16 for trigger pulled.

Personally, I don't know what to do with the above information because TB has
built in all the capabilities I can think of for applications.  Someone,
somewhere will think up uses for it, however, so I hope they will let us know.

-------------------------------------------------------------------------------
Page 6 -

If one wants to produce weird sounds or the equivalent of multiple notes use
the instruction &(20)=n  If n is equal to O or 64 or 128 or 192 or 256 the note
is the note that is usually heard when reset is pushed.  So, if you have a few
minutes key in this program, run it and pick out a sound you would like to use
in a program for special effects.

              10 NT=50      (slow it down so you can hear what's happening)
              20 FOR A= 0 TO 256
              30 &(20)=A
              40 Print "A"                (play something)
              50 NEXT A

The basic note stays throughout the program but the supplemental notes vary in
effects.  All start at the lowest position of the 64 note chromatic scale and
go to the highest.


&(8)=n causes the screen to blank out and wipes out any program.

&(9)=0 to 39 changes the screen to black and uncovers the screen from left to
           right 4 pixels at a time.
&(l3)=n does lots of strange things all of them causing program loss, most of
     them freezing action but some of them displaying a screen full of images
     such as memory and some delete the cursor some leave the cursor displayed.
     24 turns the screen black and a couple displayed the word *OVERFLOW* from
     the calculator function.

&(l8)=n gives more variations of musical tones.

&(l9)=n ditto on musical tones.

&(2l)=n causes the volume of tones to increase for 16 n's and then drop back to
normal level.

I don't know whether all basic units react the same way to all the commands
because in &(13)=n I couldnt get them all to react the same way two days in a
row.


Number 3 hand control plug-in is on the extreme right.  For some reason
Bally numbered them, left to right from the front of the machine.

                         1    2       4    3

                                               Good Luck !

                                      Bob Fabris            408-272-2364 home
                                      3626 Morris Dr.           742-6048 work
                                      San Jose, CA, 95127

-------------------------------------------------------------------------------
Page 7 -

DATAFILE [logo] [Following article is from a NCE/Compumart mail-order catalog:]

The Bally Professional Arcade has transcended the barrier between the
programmed computer game to a user programmed computer system.  The
transformation comes about when you insert the Bally BASIC ROM cartridge and
press RESET.  With the aid of a keyboard overlay card, the 24-key keypad is
transformed into a full alpha-numeric keyboard with four "shift" keys to allow
you to program in an enhanced version of Palo Alto Tiny BASIC.  By forgetting
that you ever used a regular keyboard, you can learn to type programs in BASIC
fairly quickly due to the fact that the keyboard overlay is arranged in a
logical manner.

The keyboard not only allows you to program letters, numbers and special
symbols but it gives you the capability to use the WORD shift key to enter an
entire BASIC command in one keystroke.

Bally BASIC is designed to work with the various elements of the Arcade to give
as much control as possible over the TV screen and speaker (for music) while
allowing you to input from either the built-in keypad or two joysticks.
Here is a block diagram to give you an idea of the elements making up the Bally
Professional Arcade with Bally BASIC:

                 KEYPAD ---\                /--- BASIC ROM
                            \              /
             JOYSTICK 1 --\  \            /  /-- INTERNAL ROM
                           \  \          /  /
             JOYSTICK 2 -\  \  \        /  /  /- PROGRAM RAM
                          ------- Z-80 -------
         TAPE INTERFACE -/  /  /        \  \  \- STRING RAM
                           /  /          \  \
           TV INTERFACE --/  /            \  \-- SCREEN RAM
                            /              \
           INPUT/OUTPUT ---/                \--- MEMORY


Let's take a look at the Input/Output (I/O) side of the diagram first.  The
24-key keypad has four shift keys to produce 93 possible codes to be entered
from this input device.  Each shift key is color-coded on the overlay and the
background color of the screen changes to match this color when the shift key
is pressed.  The keypad can be interrogated with a special variable (KP)
during the execution of a BASIC program.

Two joysticks are able to input to a BASIC program in three ways: TR(1) is
the variable attached to the trigger on the number one joystick.  This
variable is equal to zero until the trigger is pulled when it is equal to one.
The joystick itself has two variables associated with it: JX(1) and JY(1).
Both variables are equal to zero until the joystick is moved.  Here is how
these variables change with the position of the joystick:

                                  JY(1)=1
                      JX(1)=-1        0        JX(1)=1
                                  JY(1)=-1

By combining the information read from JX and JY, you can resolve eight
separate joystick positions (eg. JX=1, JY=-1 would be the Southeast direction).

Continued on pg. 13 [not really]


NCE DATAFILE, cont. from page 11

The third and most versatile input is the knob on the end of the joystick which
goes by the variable name, KN(1).  KN(1) uses the analog to digital circuits
in the Arcade to give you numbers between -128 and +127.  This can be used to
vary colors, position or sound easily and with accuracy.

The optional Bally BASIC cassette interface allows you to store and retrieve
programs (but not strings) using a standard tape recorder with earphone and
microphone jacks.  The format used is the Kansas City Standard which runs at
300 baud.  The interface plugs into the jack normally used for joystick number
three when you are playing the Arcade games and it gets power from the jack
provided for the future light pen option.  In operation, an LED tells you when
the signal is present before the loading starts.  When the program loads, it
also lists on the screen to let you see what is loading and if it is loading
correctly.  There is even a command to read information from the tape directly
to the TV screen without disturbing memory so that you can verify that the
program was recorded correctly or so that you can find a blank spot on a tape
to save your program.

The TV interface is the output section for the Bally Arcade; it allows color
graphics, text and musical tones to be controlled from your program.  The
foreground and the background colors are controlled by the variables FC and BC
and there are 256 colors available for each.  The restriction is that only two
colors may be on the screen at one time in Bally BASIC as opposed to the eight
colors available simultaneously in the Arcade games.  Text is read onto the
screen with the PRINT command or the TV variable which will be explained later.
Music is also obtained from the PRINT command since each character has a note
associated with it.  MU is a special variable which plays music without
printing on the screen.

The cursor (a moving block which acts as a screen pointer) can be positioned
with two more special variables: CX and CY.  By setting these variables equal
to the desired coordinates on the screen, you can make the cursor appear
wherever you want it to allow you to print text at that location.  These two
variables may also be used to tell you where the cursor is at any time by
simply reading them (ie. PRINT CX, CY).

Now that you've seen the hardware side of the Bally Professional Arcade,
the input and output devices, let's take a look at the insides which include
the memory circuits and their contents, the software.

The memory "space" in the Bally Professional Arcade is determined by the
microprocessor within the unit, the Z-80.  The normal amount of memory which
can be handled by a Z-80 is 65,636 bytes (a single character takes up one byte
which is 8 bits).  In the Arcade, this memory space is divided into ROM memory
which is set up at the factory for a certain program and RAM memory which
stores your information whether it is the program you write, the music you
compose or the shapes you create on the TV screen.  The full range of the Z-80
microprocessor will not be used until the expansion unit becomes available
with its own RAM and ROM but the Bally BASIC system is impressive when you
weigh its capability against that of anything near its price.


* My unit works only when plugged into the extreme right connector.
                                            [footnote misplaced from above ??]

-------------------------------------------------------------------------------
Page 8 -

The ROM in the Bally Professional Arcade is primarily dedicated to the
three games and calculator programs but it also contains the operating system
to allow the screen to display shapes and colors as well as play notes through
the speaker.  The ROM cassettes from Bally plug into the unit and attach to
the Z-80 memory bus with a connector inside.  These cassettes may contain
games or, in this instance, Bally BASIC.

When you plug in the Bally BASlC cassette, the ROM inside takes control of the
hardware in the system to allow you to enter your own programs for games or
educational purposes.  Because the Arcade cannot attach to a printer or other
hard copy device and because this version of Tiny BASlC has no floating point
(decimal) numbers, it is not well suited to business use.  The Bally expansion
unit will serve this type of application at a later date.

The RAM is normally dedicated solely to the TV interface so that it can
display 8 colors at once with high-resolution graphics to simulate real-world
situations such as a car driving down a road or a baseball field complete
with players.  When the BASIC ROM is plugged in, the 4096 bytes of RAM are
subdivided into three sections: program, string and screen.  The trade-off is
that you can only display two colors at once but you gain 1800 bytes of memory
in which to store your program, and you can store up to 874 numbers in the
numeric string memory (this is where you store the notes for your piano player
program).

Learning Bally BASIC is not hard; most of the commands are the same as you
find in any computer's BASIC, but there are four new commands which provide
new operations which most computers have no way to duplicate.  The standard
BASIC commands available are:

FOR, TO, NEXT, STEP, GOTO, GOSUB, RETURN, INPUT, RND, LIST, IF (no THEN)

Bally set up the following special purpose commands for you to use:

   PRINT - This command operates in the normal way except that as each letter
           or number is placed on the screen, it plays a note whose duration
           is determined by the note time variable NT.  NT=0 turns off this
           music feature.  PRINT #A, B will print A spaces before it prints
           the numeric value of B to provide formatting capability.

   BOX   - BOX X, Y, A, B, C prints a box on the screen centered at location
           X, Y with height A and width B screen units (pixels).  The fifth
           parameter, C, gives you control over how the box affects the screen.
           1 = foreground color, 2 = background color, 3 = foreground color but
           reverse images inside the box, 4 = no box (good for moving over
           images without disturbing them).  The screen has 13,833 separate
           pixels arranged 159 wide and 87 high.

   LINE  - LINE X, Y, C draws a line from the end of the last line (or 0, 0
           which is the origin or  center of the screen) to the pixel at
           location X,Y.  The third parameter C is the same as the fifth
           parameter C for the BOX command.  Both BOX and LINE commands
           operate fairly quickly.

   CLEAR - This command simply clears the screen for more graphics to be
           displayed or text to be printed.

Another interesting special variable, PX (X, Y) allows you to check the pixel
at location X, Y to determine whether it is currently set to the foreground
color (1) or the background color (0).  This is useful if you are moving
something on the screen and you want to check for a barrier, etc.

When using the screen for text, the display consists of 11 lines of 26
characters each.  A program line can extend over four screen lines for a
total of 104 characters.  Statements may be separated by a semicolon on
the same program line.  Integers from -32767 to +32767 may be used.

Three error messages are issued by Bally BASIC:

   WHAT? - This is the syntax error message which tells you when the computer
           doesn't understand your statement.

   HOW?  - This message tells you that the computer knows how to perform the
           command but doesn't have the resources available.

  SORRY! - Out of memory.  You can check the amount of unused memory with
           the special variable SZ to prevent this problem.

Bally BASIC uses the term "string" to refer to a single-dimensioned sub-
scripted variable which is used only to store numbers during program execution.
874 of these strings are packed into a separate memory from the program so
that you don't have to worry about leaving space for these strings when you
write your program.  There is one way to get alpha characters from a string,
and that is using the special variable TV.  When you set TV equal to a number
between 30 and 119, you are able to access most of the keys on the keyboard
to print their corresponding words, numbers, letters or symbols wherever the
cursor is located.

The immediate functions available include GO which serves as a return key
plus it can generate a new line number ten higher by preceding it with the
WORD shift.  HALT halts program execution while PAUSE is a temporary delay
until another key is pressed to resume execution.  An ERASE key is provided
to allow you to backspace for corrections.  To give you an idea of how many
lines you can fit into 1800 bytes, this line could be entered 138 times
before the Bally BASlC said "SORRY":

         20000 CLEAR; INPUT X; LINE X, 9, 4

A key command takes up one byte as does each separate character.  A line number
occupies three bytes of program RAM but the strings have their own memory to
keep from interfering with the program.

As you can see, it is the special variables, music and graphics commands
which make Bally BASlC a powerful tool to use the Arcade's capabilities.
This, along with the low price of less than $350, makes for a perfect system
to get a start in programming microcomputers as well as to give you a reason
to turn off those boring network shows and do something creative with your TV.

Next installment will include an interesting sample program with a lot of
remarks and comments concerning its operation.

[It seems that NCE/Compumart never published the Part Two of this article...]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIANS                                         [Place US postage stamp here]
3626 Morrie Dr.
San Jose, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 02] =========================
Page 9 - [originally centered at the bottom of the page.]

ARCADIANS 2
-----------

[Volume I, Issue 2]                                       December 4, 1978

SOME recent developments in the retail field... NCE/Compumart decided on
Dec. 1 to drop the Bally line.  They will fill all back orders and repair
units.  JS&A no longer shows the Bally in their catalog, and they expect to
have their backlog substantially reduced by the end of the year, including
repair.  There is an article in a recent Business Week that indicates that
Bally may drop the production of the Arcade(r), but the factory denied this
and a retraction is in progress.

THREE TONE MUSIC has been accomplished.  I heard a tune the other day, and
it is not bad.  At the moment, the sounds are created by direct access to
the chip via machine language, but we are getting indications of how to
do it at the BASIC language level.  Seems like &(n)=p yields some results
when n varies from 16 to 23

ALONG the musical line, if the tone generator can be replaced by a unit
like the one described in the November 73, we'll get realism.  The article
discusses a unit that varies the harmonic content and envelope of a note,
therebye making it representative of an actual instrument.

A new dealer in my neighborhood is the Emporium chain, and also Home Cinema
of Santa Clara and San Rafael.  The manager of the Santa Clara store invites
Arcadians to identify themselves for special consideration.  They manufac-
ture a rugged interface switch -the one that goes to the back of the TV-
for use with the Bally.

FOUR COLOR SCREEN is now available, as follows: substitute the desired
color number for the values n and p.
First off, split the screen with a vertical line by using &(9) = s
where s is 84 if you want the split in the middle
Use BC and FC to give the left side colors as in the book
Use &(2) = n   &(3) = n    to give the right side foreground
Use &(O) = p   &(1) = p    to give the right side background

$ gives access to the internal calculator.  Not much known about that yet

THE ADD-ON now seems to be scheduled for full marketing for next year's
Christmas season.  The last inputs will be made after the January show,
and production start in April.


APPARENTLY some of the handwritten material in the last issue did not
reproduce well, so it has been typed and included here:

TRY THIS:                                  &(M)=N appears to set output
10 PRINT &(23)                             decimal port #M to the value of N
20 GOT0 10                                              and
and run the program.                       N=&(M) appears to read the
In turn press each key in the left hand    value of the M input port into the
row and see the                            variable N.
appropriate numbers appear

Use this program for checking out your            10 &(16) = JX(1) [set TONMO?]
controller Joystick operation to see that it      20 PRINT &(16)  [display SW0]
functions in all positions                        30 GOTO 10  [still: 5x(1) ??]

-------------------------------------------------------------------------------
Page 10 -

HERE are some more secrets from the depths of the Tiny BASIC.  I am also
reprinting a copy of a technical paper that has a lot of background infor-
mation about the entire system.  Sorry about the legibility in places.

     A couple of comments on string constants.  The @ must be used with ().
Your example on pg. 4 did not show this and may cause confusion for some.
The characters produced with TV=@() duplicate for the most part, the ASCII
decimal code.             My unit starts out with 900 strings available,
but decreases one string for every two bytes of program stored.
(Therefor 900 strings = 1800 bytes)

Other commands
--------------
10 FOR A = -10 To 10              TBASIC has two additional commands not
20 B = ABS (A)               indicated in their manual.  ABS () produces
30 PRINT A,B                 the absolute value; i.e., it changes a negative
40 NEXT A                    number to a positive.  A STOP statement does
50 IF KP = "1" GOTO 70       just that, and can be placed anywhere in the
60 STOP                      program.  I use the KP statement to place a
70 ....                      temp. halt in the program.  In this, depressing
                             a '1' causes a jump to statement 70.
                             Any other character and the program stops.

      I've had some interesting results with the CALL () command most
not worthy of repeating.  Similar in some respects to &(13).  One
of the most interesting was the display of the large GAME OVER printout
that occurs in the games portion.
      You might have your experts play with the $.  Try the following
and other variations.

10 FOR A = 1 TO 256          10 FOR A = 1 TO 256
20 $ = A,B,C                 2O $ = %(A),B,C
30 PRINT A,B,C               30 PRINT A,B,C
40 NEXT A                    40 NEXT A

  RECEIVED a question about the hand controller connector.  It is an RS-232
  connector, with nine contacts.  One dealer is JADE Computer Products, of
  4901 W. Rosencrans, Hawthorne, CA 90250.  Part number DE-95, at $2.15.
  In addition they have a cover at $1.25, to finish it off.

-------------------------------------------------------------------------------
Page 11 -

                            BASIC Zgrass -- A sophisticated Graphics Language
                                   for the Bally Home Library Computer

                                   Tom DeFanti, University of Illinois
                                            at Chicago Circle
                                   Jay Fenton , Dave Nutting Associates
                                   Nola Donato, University of Illinois
                                            at Chicago Circle

                     Abstract

     Home computer users are just now discovering computer graphics. [reflowed]
Modest extensions to BASIC allow plotting but not much more.  The Bally Home
Library Computer, however, has hardware to aid implementation of video games.
Custom integrated circuits working on a 160X102 pixel (2 bits per pixel) color
television screen allow certain forms of animation in real time.  To give this
power to the user, BASIC Zgrass has been designed and implemented.  It is an
extension of BASIC that allows parallel processes, picture objects that move,
scale and group together as well as several drawing modes.  There are also
software controls of a three-voice music synthesizer, interactive input
devices, a film camera and an IEEE bus interface.  We will concentrate
mainly on the language design for making it all easy to learn and use.

                Content Indicators
1.51, 1.52, 2.12, 3.41, 3.44, 3.80, 4.13, 4.22
Keywords: interactive computer graphics, intepreters [misspelled], real-time,
graphic language, art

       Introduction and General Motivation

     Zgrass can be called an immodest extension of BASIC (Ted Nelson refers
to it as "Super BASIC" [1]).  It is an extension in that graphics support and
user instruction facilities have been added to the capability of running BASIC
programs copied out of a hobbyist computer magazine.  It is immodest in that
great liberties have been taken to weed out some of BASIC's undesirable
programming conventions.  Zgrass is actually a video game programming language
designed specifically to encourage creation of beautiful animations in short
order.  It is also designed to teach many of the important concepts of
interactive systems and 2-D computer graphics.  The hardware used is the Bally
Home Library Computer built around the Bally Arcade unit.  It is a Z-80 based
machine with special integrated circuits which help the processor manage the
160x102 2-bit-per-pixel color output connected to any standard color tv set.
The alphanumerics generated by program output and keyboard input are video
mixed over the color graphics so text is not constrained to the 160x102
format.  The two bits in each pixel indicate one of four bytes from which an
index into a 256-element color map is taken.  Thus, four of 256 colors can be
on the screen at once.  The hardware also includes some tricks which have been
found useful in professional video arcade units.  Its projected cost, without
color tv, is about $750.00, including the arcade unit.
     Zgrass itself takes up 16k bytes of ROM storage and has 16k bytes of RAM
for user storage and system use.  An additional 16k ROM (referred to as the
'extension' below) plugs into the side and provides room for a compiler and
other features.  Audio cassette storage and modem linkage to other computers is
provided.  Software for driving optional intelligent floppy disk drives is also
built-in.  Further hardware in this unit includes four hand controls, a 24-key
pocket calculator keyboard, a three-voice sound generator and an IEEE Bus
interface.  Zgrass is the operating system for this computer as well.
     Zgrass design concepts are rather different from those apparently
underlying the current batch of home computer systems.  Home systems are now
trying very hard to be cheap minicomputers for expert users.  These users
when at home can be likened to the ham radio operators of the nineteen fifties,
able to change diodes, violently shake intermittent boards and, in general,
understand the innards.  These persons can also get gratification from fighting
with manuals and the trials of the latest software release, just as we
professionals do for a living.
     Zgrass, however is designed for the two-hour-a-week user.  This type of
person is guaranteed to continually forget the syntax and semantics of whatever
software exists.  Zgrass is designed (certainly at the cost of computer time
and memory use) so the user does not have to rely on a manual to decipher
everything.  In short, this system is trying to be the Model T of the home
computer industry, with all that implies.  We shall see.
     Above all, Zgrass is designed to be as attractive and as fun as pinball
but considerably more intriguing and useful.

             General Zgrass Concepts

     "Right away" is the foremost design concept of Zgrass.  Positive
experiences in the first two hours of play are essential.  When it is not
part of your job or intended career, you must be able to do interesting,
beautiful things right away, without reading a five-pound manual.
     BASIC is now the home computer language.  BASIC was designed as a
teaching language and shines in its simplicity and easy matrix operations.
It is, however, a poor language for the

-------------------------------------------------------------------------------
Page 12 -

manipulation of anything but numbers.  It has no features that make writing
large programs (over 200 statements) easy.  Its subroutine capability is
archaic.  But, it is obviously a success in what the designers intended,
otherwise it could not presently be the universal home computer language.
     In particular, though, BASIC is a poor language for animation.  To be
sure, plotter art and decaying sine curves are well suited to BASIC.  But our
almost eight years of experience with the GRASS language[2] and Dan Sandin's
color video Image Processor[3] as well as being directly or indirectly involved
with roughly half of the most popular arcade video games, has given us insight
into the potential of a color tv set, and you just cannot do a tv set justice
in BASIC.
     The next several pages will give details on syntax of Zgrass, but first
we will further consider the "right away" criterion.  Anyone who already knows
BASIC should be able to write Zgrass programs immediately.  For those
persons in America who do not religiously read "BYTE" or "Creative Computing"
(a sizable part of the population), we have been developing self-paced
instructional software for Zgrass.  The prototype system now functions quite
well in GRASS (see paper by Towle and DeFanti, these proceedings).  Both GRASS
and Zgrass have enough supervisory functions and error trapping features to
allow a good programmer/educator to write programs which execute and verify
instructional programs written by beginning students.  We feel that the chief
problem in teaching programming is that it, as an activity, is poorly simulated
by the examples and the Backus-Naur-type syntax information usually found in
manuals.  Normal programmers have fellow workers, consultants or at least other
students around to help out.  The home user has no such recourse.
     The essence of the teaching problem stems from the fact that novices have
tremendous problems with meaningless (to them) error messages.  You really have
to know nearly everything about a system before you can start knowing why what
you have typed does not work.  This is absolutely not an overstatement of the
problem.
     All this commentary leads directly to computer aided instruction. While
CAI has not quite lived up to its expectations for teaching other subjects,
it can be used to teach people how to program.  It is relatively
straightforward to lead the user through commands, interactively teach looping
concepts and verify the results of carefully chosen problem sets.  All possible
errors can be trapped and explained in detail.  Our experience with this type
of teaching is very supportive -- non-programmers (primarily art students and
a few university officials) can be doing fascinating graphics of great beauty
in half an hour.  The whole process has the feeling of a game and is
consistently rewarding.  Providing internal system support for these teaching
programs is no doubt the second most important design concept of Zgrass, after
"right away" of course.
     Note that few (if any) programming languages allow you to write programs
to interactively teach programming.  Smalltalk[4] and Logo[5] teach by user
experimentation in surroundings not lacking professional help.  Plato[6] has
no student program or storage space (only authors can write and store TUTOR
programs).  One could probably design some CAI programs in Snobol or Lisp but
these are hardly languages for novices and they are not known for their lucid
error message handling, or availability on micros.  Perhaps a graphics-extended
APL might do.  It would be wonderful if the experience with Zgrass encouraged
others to design extensions to languages with teaching in mind.

             Zgrass Technical Details

     Zgrass is an interpreter of commands and assignment statements stored
internally as ASCII strings.  These strings may be entered and executed line by
line, formed into programs (called "macros"), edited, and even built and pulled
apart by string manipulation primitives.  (A compiler which eliminates most of
the interpretive overhead and which takes better advantage of the resident
hardware floating point unit is part of the 16k extension ROM.)
     We are determined to maintain compatibility with at least TINY BASIC (it
is hard to say what "standard" BASIC really is).  Since BASIC has line numbers,
Zgrass labels must start with a number (e.g. 100, 1obekenobe, 707crash, etc.).
A BASIC program copied out of "BYTE" would simply have a lot of extraneous
labels.  Labels in Zgrass are obviously not used to order and edit the
statements as in BASIC since one would hardly like to have alphabetically
ordered labels and Zgrass has a good on-screen editor anyway.  Our definition
of compatibility is restricted to executing perfect programs written in BASIC.
Getting them in, editing, executing and debugging them is done differently.
     Commands are made up of a keyword followed by zero or more operands.
Examples of commands are:
        goto 4jail
        move deathweapon,x1,y1
        clear
        input dea,fbi,c
        print beep,"who loves ya, baby?"
(some of the more idiosyncratic BASIC commands, notably "if" and "for" have
their peculiar syntax retained for compatibility).
     Commands are gentle to users.  If not enough arguments are supplied, if
an incorrect argument is given or the argument is non-existent, a special error
fixup routine is entered.  This routine prints out the command in error, points
at the argument in error and says, for example, "NO! this command wants a
variable name here."  The user can then type in a correct argument and the
command goes on.  He can also elect to enter command mode to create a missing
name, for example, and then resume the above process.  All this will happen
whether commands are entered line-by-line or executed as part of a macro.
     Note that all commands are more or less self documenting.  You can type
the command name and it asks you for the operands.  This error facility allows
one to get by trivial syntax errors without constant re-editing.  It is also
a sloppy way to get input to macros, although there are several conceptually
clearer (to computer folk) ways.
     Many commands have options indicated by postfixing the command name with a
hyphen plus a modifier (e.g. "input-string" which can be shortened to "in-str"
or even "i-s").  The hyphenated option construction is more English-like than

-------------------------------------------------------------------------------
Page 13 -

single-character switches and it helps keep down proliferation of command
names.
     Since every command has an internally stored list of what argument types
it wants, the "help" command can easily print these out with options (there
are about 20 different argument types in Zgrass, like number, string,
expression, picture prototype, array and so on).  Further syntax and semantic
information is available in the manual but the information you need most often
is at your fingertips "right away."
     A few more details about variables are necessary.  Variable names (macros
are actually string variables) can be any length and must start with an
alphabetic character.  Variables used as macros may not have names which
conflict with system names.  Global variables start with lower case letters
and local variables start with upper case letters.  The system decides whether
a variable is a numeric or string variable by examining the context in which
it is first used.
     (Commands are terminated by semicolons or carriage returns.  The
alphanumeric generator which is video mixed over the color graphics or routed
to a separate monitor puts up sixteen 32-character lines.  The alphanumeric
handler automatically folds lines over 32 characters long for display purposes
but does not insert a carriage return.  A special character indicates folded
lines.)

     Arithmetic statements are similar in format to assignment statements in
BASIC or FORTRAN, with the exception of the left arrow used.  The parser auto-
matically changes equals signs (which are used for conditionals) to left arrows
to maintain compatibility with BASIC yet allow a sophisticated expression
evaluator to operate unambiguously by not having to deal with multi-purpose
operators.  Examples of arithmetic assignment statements are:
        abc<-sin(arg1)+cos(arg2)  [note: <- is a single 'left-arrow' character]
        babarum<-1.2
        c<-whodunit(f,g,huh)
where the last example contains a user-defined function (a macro, of course).
     Numeric variables are kept in fixed or floating point by the system,
switching mode as necessary without user knowledge.  The luxury of a floating
point arithmetic unit helps calculation speed considerably.  There are also
reserved system variables which hold the values of the hand controls, keypad
keys, external I/O strings and other special things.
     Strings are assigned as follows:
        tom->"this is a single line" [& -> is a single 'right-arrow' character]
        sam->tom&tom&babarum       ;.concatenate
        cr->'
        '          ;.to enter a carriage return
        mymacro-><print tom,cr,tom," again" [mixed in '<' & '>' angle brackets]
                 stuff-><hello>  ;. stuff gets "hello"
                 for a=1 to 10
                 print stuff,a
                 next a>
The last example shows nested assignments and a way to create a macro.
Note that acceptable string delimiters are ", ', <, >, [, and ], the last four
of which must be balanced.  String decomposition is handled by a variety of
string commands in the 16k extension.

                     Macros

     Any string can be executed in Zgrass.  If it contains meaningful commands,
it can be used as a program.  Again, programs in Zgrass are called "macros."
Macros can call other macros, call themselves, execute in foreground or in
parallel with other macros in the background, supervise other macros and
interact with macros running on other Zgrass machines.
     Zgrass differs from BASIC greatly when it comes to subroutine linkage.
Zgrass has a very convenient and conceptually clear way of passing arguments --
you simply make believe the macro is a command and use standard command syntax.
Furthermore, the "input" command (for numbers) and the "input-name" and
"input-string" commands (for strings) fetch the arguments passed in a way that
automatically request user input from the terminal if not enough arguments are
passed.  This linkage is discussed in more detail below.
     Looping and control transfer is done with "goto," "for/next" and "gosub."
(Gosub is retained for compatibility.)  A version of goto called "skip" has the
option of jumping relative a number of lines, a good feature for those quick
loops in which you forgot to put the label.  There is also a "return" command
which can pass an argument back if it is a function call like "whodunnit"
above.  When a macro is asked to execute (by typing its name as the first thing
on a line, like a command), the system builds a macro invocation block (MIB).
The MIB holds information about local variables, for/next blocks, argument and
data lists and so on.  When the macro is done, the MIB is deleted along with
all the pieces hanging off it.  The storage allocation/reclamation algorithms
used are again similar to GRASS's.
     Numeric arguments are passed using the "input" command.  It is similar to
"input" in BASIC but it first checks the argument list.  If there is an
argument, it is grabbed.  Otherwise, the user is requested to enter the value.
Input works in concert with "print" which suppresses output when arguments are
present.  (Of course, there are options to input and print which force terminal
I/O.)  Thus, a macro that has lots of prompting information can be called by
another macro without all sorts of editing to remove the prompts, but the macro
will wake up and start asking questions if not enough arguments are supplied.
One can create self-documenting macros which are efficient, yet help out when
necessary.  (How many times have you forgotten the arguments to a subroutine?)
     The "input-name" command functions similarly for strings and is used to
get names passed as arguments.  You use the "@" operator to indirectly
reference strings.  For example:
     getandmove-><1again print "gimme a pixname"
        inp-name gettemp         ;.get name
        if gettemp='',return     ;.if null, return
        get-tape @gettemp        ;.get it from tape
        move @gettemp,x3,y3      ;.attach control3
        display @gettemp         ;.and show it
        goto 1again>
        .
        .
        .
        getandmove apple,witch,titles,,

-------------------------------------------------------------------------------
Page 14 -

where the last line is the call and the lines above are the macro definition
presumably entered before the call.  Comments are lines or sub-lines which
start with a "."
     The "input-string" command expects string delimiters around arguments
passed so that whole commands can be arguments (you cannot pass a comma with
the input-name option).  This is important for the construction of teaching
and verification programs, among other things.  If the argument is not there,
input-string will require input from the keyboard, but without the string
delimiters, just like input-name.
     The principle here is to make macros look like system-defined commands
as much as possible, a rather loose definition of extensibility, but one that
is meaningful when speaking about interpreters (a conclusion adapted from
comments in [7]).

           Picture and Pattern Drawing

     Zgrass has several predefined variables which cause drawing on the screen
when they are written into.  To display a point, you set variables xs and ys to
the x and y coordinate.  When you set variable cs to a value from one to four,
the point is displayed with the color value indicated by the value of cs.
There are also the "line," "box," and "circle" commands which draw vectors,
and filled rectangles and ellipses on the screen.

                Picture Animation

     Once a picture is drawn on the screen, all or part of it may be stored as
a picture prototype with the "snap" command.  Picture prototypes are pixel
lists in this case and are kept in user 16k RAM rather than in the screen 4k
RAM.  So, a picture is something you see on the screen and a picture prototype
(or "prototype" for short) is its representation in user memory.
     One then attaches the prototype to a variable, time-based variable
(a user-defined special variable whose value varies automatically over a
given time period), hand control, or user-defined function.  The prototype
is displayed with the "display" command.  After that, anytime the variable or
function changes, the prototype will be erased with an "exclusive or" write
and rewritten with its updated translation or other transformation with an
"exclusive or" write.  This technique lets pictures of one color pass over
pictures of another color without leaving holes (using standard bit plane
raster scan graphics techniques).  There is an interrupt level routine which
manages movements of prototypes and a host of other details, along the lines of
a conventional refresh graphics driver.  The user has a simple way to indicate
what maximum percentage of time should be allocated to interrupt level
updating, the rest being left for command processing.
     The same interrupt routine also manages picture prototype lists made up of
lists of points, vector endpoints, box and circle drawing information.  With
the 16k extension, rotation and scaling of these lists is possible.  Prototype
lists of course, have to be built up rather than snapped using options to the
line, box and circle commands.  The user can access individual endpoints and
manipulate the prototype as a whole.  Of course, there can be many prototypes
floating around at once.
     Again, the user's aesthetics and perceptions are essential.  Since
everything is real-time (or close to it) the user can easily see the effect
of various commands on the screen, the implications of varying amounts of
interrupt processing time, the ways of using different colors, and so on.
     Prototype lists and patterns can be grouped into a tree structure which
allows concatenation of transformations.  Moreover, the "select" command
specifies a sequence of pictures to be put up and erased in round-robin fashion
(imagine several views of a walking "man" being switched to provide the
illusion of walking).  A simple Super 8 camera hookup allows more complex,
synchronized sequences to be filmed, if desired.

                   Conclusions

     Zgrass is designed to be a first programming language which encourages
both novices and experts to learn about color graphics, generate meaningful
and pretty displays, possibly make Super 8 movies, and perhaps even access
governmental databases and control electric train sets.  The software is
designed to be multi-leveled and rich with feedback.  Considerable research
into the teaching aspects has been folded into the design.
     Continuing developmental effort along these lines now concerns higher
resolution displays, much faster microprocessors, parallel programming
techniques and connection to videodisks and other television equipment.  Zgrass
is one way you can control the amount of sex and violence on your tv set.



                   References     [book and/or magazine titles were underlined]

[1] Nelson, Ted, The Home Computer Revolution 1977, Pg. 79.
[2] DeFanti, T.A., "The Digital Component of the Circle Graphics Habitat,"
     Proc. NCC, 1976.
[3] DeFanti, T.A., Sandin, D.J., and Nelson, T.H., "Computer Graphics as a Way
     of Life," Computers & Graphics, Vol. 1, No. 1 , May 1975
[4] Goldberg, A. and Kay, A., Smalltalk-72 Instruction Manual, Xerox PARC
     #ssl76-6, March 1976.
[5] Papert, Seymour, A Computer Laboratory for Elementary Schools, Logo Memo 1,
     MIT Artificial Intelligence Lab, October, 1971.
[6] Alpert, D., and Bitzer, D., "Advances in Computer-Based Education, Science,
     Vol. 167, March 1970.
[7] Feldman, J.A., "Proceedings of the Extensible Languages Symposium,"
     SIGPLAN NOTICES, Vol. 4., No. 8., August 1969.


Addendum: Zgrass Command List (in addition to BASIC)

(The commands beginning with a '*' are in the 16k extension.)
(Not all options are indicated.)

[oops!  The rest of this didn't get included!!  See Vol. 1, Issue #5, pg. 37]

-------------------------------------------------------------------------------
Page 15 -

IN DEPTH NON-PROFESSIONAL VIEW OF &(9)

     If you set up a loop  FOR A= 1 TO 200; &(9)=A; NEXT A
you will see a vertical line wiping the screen from left to right, color
changes, and sometimes a blanked-off area at the top and bottom.  I have
been doing a little research with the following results.
     The world of &(9) can be envisioned as a panorama of scenes laid
side by side, with a "Home Scene" in the center.  The Home Scene is the
one we see thru the TV "Window" when we normally use the TBASIC.  Spreading
to each side are a number of scenes, the first few of which will be des-
cribed.  Each scene has the same dimensions as the TV Window, something like:
            --+----+----+----+----+----+----+----+----+--
              |  --+----+ #3 | #2 | #1/|   /|    |    |
              |    +----+----+    |  / |  /X|    |    |
              -----+----+----+----+-/--+-/--\----+------
                                   /--/-/  / \
                      Window ---> | T.V.|\/   \--- HOME
                                  |_____|/|       Scene
                                  \\\\\\\/

If you set &(9)=0, you will view the first scene, with the background
in color.  In this scene, the color controls FC and BC do not work.  Instead,
&(11) gives the background and &(0) gives the foreground.  This is #1 above.
     If &(9)=37, you will see another scene, #2 above, but it is now like
the Home Scene in that FC and BC again operate.  These types of scenes alter-
nate as a general statement.  The next in line, #3 above, is set at &(9)=63,
but there is now a border above and below the text area of the screen -
and &(2) provides the foreground color while both &(0) and &(11) will give
the background, and &(1) controls the border.
    We can keep moving sideways, jumping from scene to scene with the
following generalities: The width of a scene is either 26 or 38 "numbers"
wide.  The numbers are the values of A, so that setting A equal to 63, 102,
127, etc, will give you a full view of the various scenes.  Actually there
seems to be a tolerance of +/-1.  The scenes alternate between white back-
grounds and colored backgrounds.  The white backgrounds have the 26 number
wide scenes.  And the same kind of story takes place in the -A direction.
     Color control in the 'odd' scenes is inconsistent, as the follow-
ing table shows:     SCENE:   ||   #1   |    #3    |    #5
                   -----------++--------+----------+----------
                   Foreground ||  &(0)  |   &(2)   |   &(2)
                   Background ||  &(11) |&(11)/&(0)|&(11)/&(0)
                     Border   ||  n/a   |   &(1)   |   &(2)

     If &(9) is set to some intermediate number, say &(9)=70, you will
see parts of two scenes at once, and since adjacent scenes have a dif-
ferent color control scheme, you can get multicolors on the TV Window.
With the above example, the Window will see:
                      ......__,___,______,..+...
                       .  FC ---> [------] <--- &(2)
                       .  BC ---> |   // | <--- &(0)
                       .      |   [______]..+
                      ........+---+------+.<--- &(1)

     The words written on there are written on the Window, overlaying
the split screen.
     Caveat - the description of scenes is a personal attempt to under-
stand the world of &(9) and has a number of conceptual errors in it. rf
     __,____,_#5_,____,_#3_,____,_#1_,____,____,____,____,____,____,____
    ---+----+----]    [----]    |    |HOME[----+----+----+----]    [---
      /|    |  //|    |  //|    |  //|Sc- |    |  //|    |  //|    |  /
    ___|____|____]    [____]    |    | ene[____|____|____|____]    [___
  ...--+----+----+----+----+----+----+----+----+----+----+----+----+----...
      191  165  127  102   63   37   0    0   -26  -64  -90 -128 -155
                        <--- +A       T.V.    -A --->

-------------------------------------------------------------------------------
Page 16 -

EXECUTIVE SOFTWARE data is now available from me at $1. to cover printing and
postage.  This is of value only to those conversant with assembly language.
It was developed by Tom Wood and provides internal locations of most of the
data, subroutines, etc., that a programmer would find useful.

[note: the identical font used in the NEW COMMANDS article, Issue 3 leads me to]
[believe this is ON-BOARD ROM SUBROUTINES; "bally_on-board_rom_subroutines.pdf"]


                                 Char. Binary Dec. Hex.  Char. Binary Dec. Hex.
HERE is a portion of the ASCII   ----/-------\----\----  ----/-------\----\----
code as it pertains to the Bally SP | 00100000  32  $20   @ | 01000000  64  $40
                                  ! | 00100001  33  $21   A | 01000001  65  $41
Use @(n) where n is the number    " | 00100010  34  $22   B | 01000010  66  $42
in the Decimal column.  --->      # | 00100011  35  $23   C | 01000011  67  $43
                                  $ | 00100100  36  $24   D | 01000100  68  $44
                                  % | 00100101  37  $25   E | 01000101  69  $45
SERVICE MANUAL PA-1 by Bally is   & | 00100110  38  $26   F | 01000110  70  $46
now available from me at $1. to   ' | 00100111  39  $27   G | 01000111  71  $47
cover mailing.  Not too detailed  ( | 00101000  40  $28   H | 01001000  72  $48
but it does have the schematic,   ) | 00101001  41  $29   I | 01001001  73  $49
a parts list, and a parts layout. * | 00101010  42  $2A   J | 01001010  74  $4A
                                  + | 00101011  43  $2B   K | 01001011  75  $4B
                                  , | 00101100  44  $2C   L | 01001100  76  $4C
CURRENT PRICING of the Videocades - | 00101101  45  $2D   M | 01001101  77  $4D
is as follows:                    . | 00101110  46  $2E   N | 01001110  78  $4E
$19.95- 2001   $24.95- 2003       / | 00101111  47  $2F   O | 01001111  79  $4F
        2002           2005       0 | 00110000  48  $30   P | 01010000  80  $50
        2004           3001       1 | 00110001  49  $31   Q | 01010001  81  $51
        3003           3002       2 | 00110010  50  $32   R | 01010010  82  $52
        3004           4002       3 | 00110011  51  $33   S | 01010011  83  $53
        4001           5002       4 | 00110100  52  $34   T | 01010100  84  $54
        5001                      5 | 00110101  53  $35   U | 01010101  85  $55
        5003   $49.95- 4003       6 | 00110110  54  $36   V | 01010110  86  $56
Note that the number of games     7 | 00110111  55  $37   W | 01010111  87  $57
has no relation to the price.     8 | 00111000  56  $38   X | 01011000  88  $58
                                  9 | 00111001  57  $39   Y | 01011001  89  $59
                                  : | 00111010  58  $3A   Z | 01011010  90  $5A
LIST of all characters and  <---  ; | 00111011  59  $3B   [ | 01011011  91  $5B
commands is generated by this:    < | 00111100  60  $3C   \ | 01011100  92  $5C
FOR A = 0 T0 120                  = | 00111101  61  $3D   ] | 01011101  93  $5D
TV=A   [only 32 T0 119 are valid] > | 00111110  62  $3E / ^ | 01011110  94  $5E
@(10)=A                           ? | 00111111  63  $3F |<- | 01011111  95  $5F
NEXT A                                                  | v | 01100000  96  $60
                                    (all four arrow keys)-> | 01100001  97  $61
The characters at positions               (multiply sign) x | 01100010  98  $62
100 to 103 have no meaning and               (and division) | 01100011  99  $63
are used to fill unused spaces.
From 104 to 119, command words are stored as one single byte: LIST, CLEAR, RUN,
NEXT, LINE, IF, GOTO, GOSUB, RETURN, BOX, FOR, INPUT, PRINT, STEP, RND, and TO.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, Staff
3626 Morrie Dr.
San Jose, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 03] =========================
Page 17 - [originally at the bottom of page.]
[note: Brett Bilbrey misspelled as "Bilbray"]

Jan 13, 1979                  ARCADIAN                         Vol 1 No 3
------------                  --------                         ----------

_CONSUMER ELECTRONIC SHOW_ in Las Vegas was attended by myself and at least
four subscribers.  The Bally technical contingent included all the names we've
seen as originators of programs.  It was a pleasure to meet those people who up
to then were only telephone voices.  The Add-On Unit was officially introduced
at a press conference Saturday.  It _will_ go into production; it has a price
scheduled at $650 or less; and a delivery date of June-July.  A reprinted
brochure is included herein.  Note the comparison of attributes with other
current systems.  As you can see, the full~up capability will be equal or
better than comparably priced equipment.  In addition, a unique feature of the
machine is called "Concurrent Processing", where more than one program can be
run at once.  The speed of operation is inverse to the number of programs being
simultaneously conducted, apparently no real limit.  They had a little sit-
down theatre, and put on a show every hour with the Add-On, showing its
capabilities, primarily in the area of graphics which is the most visible
feature.  The unit was used in a slide-show mode, where the hand control
trigger was used to change "slides" while the knob was used to move a cursor up
and down to pick items off a menu.  Various illustrations had been made with a
light pen or directly and stowed, then called up as desired.  A small airplane
was "assembled" from component parts and smoothly "flown" across the screen.
Time was available for question/answers.  Remember, the show is for retailers
and distributors, no public.  A printer and mini-floppy were attached, but
Bally is still saying that just about anyone's peripherals will be compatible
(these were not Bally-built items.)  The Add-On can search for a particular
file on a peripheral and load it, at 2400 baud.  The unit will have PEEK and
POKE capability.  The name of the total system is now Bally Computer System, so
save those Arcade and Home Library Computer labels, they will be collectibles.
The new Football game was shown in an adjacent semi-secluded booth.  It allows
the offensive team a choice of plays, then shows the field with all the
players, running, blocking, etc., then the results of the play.  Part of the
"show" included a demonstration of the Concurrent Processing scheme, where the
screen was split vertically and the left side did the random box routine while
the right side did the random line program.

_THREE VIDEOCADES_ should be available right now, according to Ron Schwenk
(916-944-2001) who said that Football ($25.) Maze and Space Race ($20. each)
should be in his hands next week - so I'm sure other dealers will be receiving
theirs as well

_NEW BASIC MANUAL_ is being distributed with the cartridge. The only difference
I could see in content was the addition of a mention of the &(16) thru &(25)
sound system.  I will get a copy for inclusion in the next issue.

_CASSETTE INTERFACE WIRING DIAGRAM_ is included.  I was told of two changes in
the circuit, should be obvious on the print.  I've also heavied up some of the
lines.

_&(9)_ [HORCB] is a very interesting area, and I was introduced to some of its
complexities by Brett Bilbrey who commented on the mention in the last issue.
As a result, I have [not?] included a pageful of my observations as a personal
attempt at understanding it.  I'd like to include more descriptive material -
can anyone help???

_ONE SUBSCRIBER_ asked for a grid to locate x,y points - I'd suggest that one
put up a BOX 0,0,179,87,1 and then accurately measure it, and make a plastic
grid overlay, as TV screens vary in size of picture or position of picture on
the screen.

-------------------------------------------------------------------------------
Page 18

_"NEW" COMMANDS_ unearthed by Tom Wood are included with this issue.

_RM = REMAINDER_ is interesting.  Normally the TBASIC swallows the remainder
of a division and only tells you of the whole number part of the answer.  But
with the knowledge of RM, we can convert it to a decimal and print it, as:
         INPUT A
         INPUT B
         C = A [div] B
         D = RM x 1000 [div] B
         PRINT C, ".", D
This will give you an answer that is a bit disjointed, as "3.   421".  But
Chuck Thomka reminded me of the PRINT #A,B statement.  It bunches the printed
parts together (as "3.421") so they look normal.  Change the last command to
         PRINT #1,C,".",D
to get this effect.  There are limitations to the size of RM x 1000.

_FORMAT VARIATIONS_ using the PRINT #A,B can be illustrated by a modification
of the above program.  Retain the first 4 lines, then
         FOR N = 1 T0 20
         PRINT #N,C,".",D
         NEXT N

_RS-232 SOURCE_ has been reported to me as R.W.Electronics,Inc. 3203 N.Western
Ave, Chicago 60618.  A 6 1/2' cable molded to a 9-pin female connector at $.50
each or 10 for $4.

_MODEM_ is barely mentioned on the cassette interface box, but nowhere else.
I understand that a tape recorder speaker output has gone over the telephone
lines to another recorder's microphone, but that's pretty crude.  We now have
a telephone modem prototype here, and should have more details next time.

_:PRINT_ is normally used with the :LIST command to transfer data from machine
memory to tape, but that's only part of the story.  Dick Strauss and Brett
Bilbrey have discovered that :PRINT alone turns on the hand control port 3 for
output.  Other commands can now take effect, and so if you tell the machine to
LIST, it will, and the data goes out the port.  Most everyone has had the
experience of punching in a lengthy program and then inadvertently touched the
RESET, and poof, all is gone.  Well, here is insurance.  Start the recorder on
Record, punch in :PRINT, and everything you key in will get taped.  If there is
a RESET, or the machine crashes for some reason, you can just load the tape
back in and go on.  0r just keep going and load the early portion later.

_RUN_ automatically after loading the tape into the machine?  Sure, the Bally
tapes do.  Remember that after you open port 3 with the :PRINT statement you
can write anything on the keyboard and it will go on the tape.  So, after the
listing has been completed, punch in RUN and that's it.

_ANOTHER WAY_ to make it run is to complete the loading, then punch in
;GOT0 10, as discovered by Jim Unroe.  The GOTO would be helpful if you wanted
to start a program at some specific location other than the beginning.

-------------------------------------------------------------------------------
Page 19

COMMAND            EXAMPLE               EXPLANATION

CALL(n)            CALL(l6384)           Performs a machine level program jump
                                         to decimal location (n).
                                         In the example, this jump will be to
                                         location 4000 Hex.

&(n)=m             &(16)=0               Outputs m to decimal port (n).  The
                                         example sets the master sound divider
                                         to a divisor of 0.

m=&(n)             A=&(18)               Inputs decimal port (n) to variable m.
                                         The example inputs player l knob to
                                         variable A.

$xm,n,o            $x@(0),@(18),@(36)    Allows use  of the "executive" math
                                         routines. The example causes multipli-
                                         cation of the 16 digit number at @(O)
                                         by the l6 digit number at @(l8),
                                         leaving the product at @(36).
                                         The s may be +, -, x, or divide.

:RUN               :RUN                  Loads data from cassette into
                                         locations 4000H to 407FH.  Upon
                                         completion of load, performs a
                                         machine level jump to location 4000H.

*PRINT             *PRINT                Same as :PRINT, but will not record
                                         on tape any words entered with WORDS
                                         shift key. [note: spelled for printer]

STOP               STOP                  When encountered in a running program,
                                         causes an exit back to BASIC.

%(n)=m             %(Z0078)=32768        POKE command.  The example sets
                                         variable A to 32768 since 20078
                                         happens to be the memory address
                                         for storage of variable A.

m=%(n)             A=%(20080)            PEEK command.  The example sets
                                         variable A to the value of variable B.

LIST m,n           LIST 100,10           Lists the n lines starting with
                                         line m.


There are two variables available that aren't mentioned in the BASIC manual:
The first is RM which appears to be the remainder of a division action.
The second variable is XY which is the current X and Y position of the LINE
command (i.e. the next LINE starting point).  Using XY (and, for that matter,
%(n)) requires some care, since BASIC treats these variables as if they were
formatted decimal constants even though they are, in reality, two consecutive
memory locations.

                                          Tom Wood
                                          14 Dec 78

[note: the identical font being used, and the description earlier, leads me to
believe EXECUTIVE SOFTWARE is archived as "bally_on-board_rom_subroutines.pdf"]

-------------------------------------------------------------------------------
Page 20 - [300 BAUD AUDIO CASSETTE INTERFACE schematic]
          [sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 21 - [Bally Computer System specifications]
          [with Rear View and Fun-N-Brains logo]
          [sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 22 - [Comparative Analysis: Personal Computers]
          [sideways, didn't scan properly]

[no mailing page ??]

========================= [arcadian Vol. 1, Issue 04] =========================
Page 23 - [originally centered at the bottom.]

                            --arcadian---

[Volume I, Issue 4]                                          Feb 19. 1979

_CIRCUIT RIDING_ Bally personnel were travelling around the country lately,
visiting local dist[r]ibutors and dealers and showing off the PROGRAMMING
KEYBOARD (new name for the Add-On Keyboard).  They were in the west Coast area
the last week of January, and I had the opportunity to attend a San Francisco
presentation.  They used the same pre-programmed 'slide show' as was used at
Las Vegas, stored on a mini-floppy.  They used a Micropolis reader.  The Spec
Sheet I had in the last issue has been upgraded to show 16K RAM resident in the
Keyboard instead of the 4K.  Also, the RS232 connector size was corrected to
25 pins.  The official title of the basic machine is now VIDEO CONSOLE.
A photograph of the combined units is included in this issue.

_BALLY MANAGEMENT_ seems to be on the fence as to the timing for the production
of the Keyboard.  These meetings were to get dealer feedback, but it seems to
me that regardless of market size, the longer it takes for the unit to appear,
the less share will be realized by Bally.  The specs are impressive, but people
won't wait forever.

_NEW GAMES_ in the mill.  I saw prototypes of three new items which should be
in production soon, plus heard a description of two more.

2007 PINBALL ($25.) where a pinball machine table is laid out with action
                   bumpers and 4 flippers (2 controllers used).  The ball is
                   about 2 pixels square, and bounces around as determined
                   by the things it hits with various speeds.
2006 SPACE INVADERS ($20.) where three rows of 'martians' flit back and forth
                   in the air, dropping bombs on buildings on the surface.
                   Your rocket launcher tries to shoot them all down before
                   all your buildings are gone or they get you.
     DOGPATCH ($?) is a shoot-out between feuding families
4004 MUSIC I and II ($50.) will project a staff on the screen and you
                   can place notes (and sharps and flats) where you wish,
                   use the trigger to fix the position, and develop music.
4003 ASTROLOGY ($50) is being delayed as it seems to need more memory.
                   They want to be able to 'travel' hundreds of years back
                   and forth in time and show the heavens at those times.

_APOLOGY IS DUE_ to over 40 subscribers who are patiently waiting for the
literature mentioned last time.  The service manual and software description
have been backordered and will be sent to you as soon as possible.

_LITERATURE HUNGRY?_ John Sweeney reminded me that the Bally Basic is based on
Dr. Wang's Palo Alto Tiny Basic, and suggested the following sources of
documentation:
     Dr. Dobb's Journal of COMPUTER Calisthenics & Orthodontia had a number
of articles in their first year of publication. The bound volume is available
from People's Computer company, Box E, Menlo Park, CA 94025 @$13. plus $1.50
mail plus .78 Ca1 tax if required.
     FCC's REFERENCE BOOK of PERSONAL and HOME COMPUTING. at $5.95 plus .95
and .35 is available from the same source.  It contains the source and object
codes for the Tiny BASIC.
     I found both volumes at the Santa Clara BYTE Shop locally.  There is
some duplication between volumes, but there is so much other material in each
that it is worth having both.

_8K ROM_ in some consoles appears as a single chip of 8K, and as 4 chips of 2K
each in others.  If one was really clever and had a good understanding of
computer circuits, additional ROM could be inserted in the unused slots, but pc
board wiring would have to be changed as all 4 sockets are wired in parallel.

-------------------------------------------------------------------------------
Page 24 -

_DIVISION WITH DECIMALS_ is just in from Paul Law who says he modified a BYTE
2/79 program.  N indicates the length of the decimal portion.
   10 CLEAR                                   80 PRINT Q,".",
   20 PRINT " X [divide] Y = N"               90 X = (X-QxY)x10
   30 INPUT "INPUT X" X                      100 Q = X [div] Y
   40 INPUT "INPUT Y" Y                      110 P = Q + 48
   50 INPUT "INPUT N N                      120 TV = P
   60 CLEAR                                  130 N = N1
   70 Q = X [div] Y                          140 IF N > 0 GOTO 90

_PROGRAMS_ will be given more space in future issues - I think we've located
most of the 'secrets' in the Bally units and we will be seeing more
sophisticated games, etc.  I am now considering two levels of programs: Free
and Not Free.
     FREE: Unless otherwise indicated, I will assume that programs sent to me
are for the use of all subscribers, without compensation.
This is for two reasons -
1) is fairness as we have as subscribers a number of persons who are employed
as programmers, and they cannot sell their wares beyond their employers, and
2) is economics as I can't afford to pay for anything at these subscription
prices.
I will ask that all programs over a half page be sent on cassette, with a list-
ing enclosed.  That way I don't have to spend hobby time in loading a 3-4+ page
program and then figure out why it doesn't work.  I will duplicate the cassette
and return it.  If a program is short, I will put it in the ARCADIAN, and if
not, I'll add the subject to a list.  If you want a program, it'll be custom
tape and sent out at the cost of tape and postage.  If you just want a listing,
send a couple of stamps.  More next time as I get some experience in this area.
     NOT FREE: Some of you will develop programs that you will wish to
charge for, and I will provide space for a note to that effect.  I do not
wish to become involved in any transaction.  The first such item is from Mr.
J. Taillefer, 115 Northwestern Ave., Ottawa Ont. CAN, K1Y OM1  who has:
Enhanced versions of Lunar Lander, Gravity Game, and Player Piano, who asks
for a C-30 tape and $1.50 postage.  He also has new games, and will send
a list for $.25 (no stamps unless they are Canadian.)

$ sm,n,o or math routines will be expanded and explained in the next issue.

_CUSTOM CHIP DATA_ may be made available late this year.  While this is
proprietary data between Bally and their chip manufacturers, the data can
generally be obtained if you had the machinery/money to do it.  This means
that the competition can do it (from whom you want to hide it) but the average
user is stumped (the guy who could use it and is supporting you).  The sooner
the user can get such data the more effectively he can use the overall
capabilities.  The game cartridges are no secret as certain of our subscribers
are determining the object code listings as they are released.

_PRINT A QUOTATION?_ It is difficult to ask Tiny BASIC to put a quoted
statement in a program, such as SAY "HELLO", unless you know that items within
an apostrophic pair will print as a string, therefore 10 PRINT 'SAY"HELLO"'
will do it.

_ZGRASS ARTICLE_ that appeared in issue 2 came from "Computer Graphics a
Quarterly Report of SIGGRAPH-ACM, Vol 12 No 3, Aug 1978".  This translates to
the Special Interest Group - computer _GRAPH_ics - Association for Computing
Machinery.  1133 Avenue of the Americas, New York NY 10036.

_HACKERS MANUAL_ by Bally is in the works.  A more detailed volume to tell us
how to use the machine is actually being written.  I'll keep you informed as to
its printing, availability, etc.

_PRICES_ of the Video Console are now listed at $329. for the 4 handle unit
and $299 for the 2 handle job (now in a white container)

-------------------------------------------------------------------------------
Page 25 -

_CALL_ does not need parentheses around the called address.  Here are a couple
of unusual ones: CALL 4910 brings up CHECKMATE and plays 10 games in the zero
player mode.  CALL 5585 plays 87 games.  CALL 4920 does the same thing in other
machines, and gets GUNFIGHT with CALL 6938 on those machines, says Carl Meyer.

_FUTURE_ of the Keyboard has been questioned because of recent publicity in
some of the trade papers.  These are in error - it is the full-size pinball
machine that Bally expects to phase out of production.

_INTERESTING AREAS_ for people to work on, recently suggested by Stan Klein,
are:
    Scientific simulations (such as gravity in Lunar Lander)
    Video Display for psychology experiments.
    Also, some of our subscribers are teachers, and wonder if any programs
    are being developed with student applications.

_"GAME OVER"_ characters were mentioned in #3 as being available by the
command CALL(3164) [note: this address is simply a text string].  This command
locks up the keypad and you can't get out except by a RESET.  We now have a
more practical way to do it, leaving the keyboard fully operational so that you
can continue a game after the words show up.  The following program, developed
by Tom Wood, executes a special routine to pull out the 'preprinted' statement.
                   10 A=20180;B=A;C=80            _If_ your machine does not
                   20 X=-43; GOSUB C              print the whole phrase,
                   30 X=12341; GOSUB C            substitute 3159 in line 50.
                   40 X=19480; GOSUB C            This is indicative of at
                   50 X=3164; GOSUB C             least two [3] variations in
                   60 X=-13871 ; GOSUB C          Bally software in the field.
                   70 CALL(B); STOP               That is, the location of
                   80 %(A)=X;A=A+2;RETURN         certain object codes in
the 8K ROM of the Video Console are not identical in all machines.

  For those interested, the following is a listing of the routine:

20180 or Hex 4ED4:  D5      PUSH   DE      Save BASIC pointer
20181        4ED5:  FF      RST    38H     Call subroutine
20182        4ED6:  35      DB     53      SR no. 52, load regs.
20183        4ED7:  30      DB     48      Horizontal screen position
20184        4ED8:  18      DB     24      Vertical screen position
20185        4ED9:  4C      DB     1140    Color and size
20186,20187  4EDA:  5C 0C   DW     0C5CH   Adrs of message to display
20188        4EDC:  D1      POP    DE      Restore BASIC pointer
20189        4EDD:  C9      RET            Go back to BASIC

  The strange decimal numbers used in the BASIC statements arise due
to an idiosyncracy of 8080/Z80 Microprocessors and the way BALLY BASIC
handles integers.  BALLY BASIC uses l5 bit signed integers and stores
data into memory with the least significant 8 bits going into the lowest
numbered memory location.  With these two things in mind we can see that
machine-level routines must be POKEd into memory 2 bytes at a time, after
reversing the bytes and converting to decimal.  As an example, consider
the first two bytes of the above routine (D5 and FF).  The order of these
two bytes must be reversed, the two bytes considered as one signed integer
and converted to decimal.  Thus FFD5 becomes -43 decimal and shows up as
line 20 in the BASIC language routine.  Continuing [lines 30 to 60],

Hex 3035 = 12341
    4Cl8 = 19480
    0C5C = 3164
    C9D1 = 13871  (C = Binary 1100 which has the sign bit set)

-------------------------------------------------------------------------------
Page 26 -

MONITORING of external functions can be done with the Arcade - that is, it
will determine the status of on/off switches that are located away from the
machine.  This can be used in a practical sense to review a process (a rise
in liquid level, or elevation of temperature might close a switch) or status
(is a window open?).  This is accomplished by using the hand controller ports.
What we have to do is plug in our own RS232 connector that is attached to the
various switches, and fool the Arcade into thinking that our hardware is the
handcontroller.  Each controller has 5 switches, TR, JX=-1, JX=+1, JY=-1,
JY=+1; plus the knob potentiometer, KN.
     a. RS232 connector.  Fig 1 shows the identity of the nine pins of the
     connector.  No connection to pin 1.  The pins are marked on most plugs.
     The controller switches and knob are connected as shown in figures 2 & 3.
     b. Switches.  The program in the computer is a simple loop, asking if
     the contact is closed.  If so, it goes on to tell you something.
                   10 IF TR(1)=1 GOTO 30          Modify this for the other
                   20 GOTO 10                     four commands.
                   30 PRINT "SWITCH 1 IS ON"
     c. Knob.  Modify line 10 IF KN(1)= N GOTO 30.  The value of N will come
     later.  The circuit for a knob is shown in Fig. 3.  All of this should
     be duplicated for each switch desired.  The potentiometer will allow
     you to put a number of switches on the same line as as each would have a
     different pot. setting as shown later.  A total circuit could be that of
     Fig. 4.  Set pot A and close the switch.  Ask the machine to PRINT KN(1),
     and get a value, say -143.  This would be the value of N in the Line 10
     shown above.  By repeating this procedure for all the pots, you can see
     that as each switch is closed, it can be identified because it has a
     unique KN value.  Theoretically you could have 256 switches, but because
     of various uncertainties, there should be 10 digits between KN values.
     The Line 10 command should also accommodate this variability by becoming
     10 IF KN(1)>-148 IF KN(1)<-138 GOTO 30 ...

_CONTROL_ is the problem I now have - to get the machine to turn _on_ some
external device, such as a relay, etc...  I received one suggestion that is
unique: Have the screen dark, and have the receipt of a switch closure create
a small BOX at some location on the screen.  Put a photoelectric cell there,
glued on the screen, and connected to a relay circuit.  If you had enough of
these, the screen would be like a porcupine.

The above discussion was triggered by a question from Jim Unroe about security
systems, and wiring data was received from Stu Haight.  The cutaway drawings
were received from Dick Belton.

By building a little logic program, three or more switches can be cascaded and
connected to a simple calculator keyboard (surplus) and made into a push button
lock affair. Fig. 5

[Figures 1 through 3 not included here]

-------------------------------------------------------------------------------
Page 27 -

[Figures 4 and 5 not included here]         10 IF JX(1)=-1 GOT0 30
                                            20 GOTO 10
                                            30 IF JY(1)=-1 GOTO 50
                                            40  GOTO 30
                                            50 IF JX(1)=1 GOTO 70
                                            60 GOTO 50
                                            70 PRINT "COMBINATION WAS 8,4,6"

_TAPE SOURCES_ in this area are:
      MICROSETTE Co., 777 Palomar Ave, Sunnyvale CA 911086 who provide a C-10
(that is, 50 feet) at $7.50 per 10 postpaid.
      MJS MAGNETIC TAPE PRODUCTS 2514 Seaboard Ave., San Jose, CA 95131 will
precut tapes to any length from 1 minute to two hours, with a 25 tape minimum.
      STANFORD INTERNATIONAL  Box 609  San Carlos CA 94070 is one that I have
purchased audio-quality tape from, and have had good success.
     Write for catalogs from these, and if you have any other sources, pass
them along.

__CANADIAN SUBSCRIBERS, and others who can get _ELECTRONICS TODAY_, found
'BALLY ARCADE: Game or Computer' as the cover feature in the 11/78 issue.
A good 6-page in-depth review included photos of the insides of the TBASIC
cartridge, the motherboard of the Arcade, and the hand controller.

_MORE MEMORY?_ Yes, you can add more memory to the Console, but only by going
into the 50-pin connector and possibly the pc board.  This would not be a job
for the neophyte, and is beyond my capability to explain.  Power may be a thing
to consider.  However, if you have the knowhow, Bally says it could be done.

_DIRECT INTERCONNECTION_ between two machines is being worked on by Jim Unroe.
He has developed a program where one machine can talk to another via a pair
of cassette interfaces.  He has one program for each machine with interactive
operations.  I'll be reviewing these and hope to report on it next time.

-------------------------------------------------------------------------------
Page 28 -

Reprints of some recently published material.


Received four or five copies of the _Electronics_ article, thanks. -->

Bally computer uses plain language

Fearing that few people will actively want to program their home computers,
the makers of these machines are turning to simpler software packages.
But whereas many personal computers use some form of Basic, Bally Corp. is
coming out with a custom language that uses words instead of letter-number
combinations to make it seem friendlier.
  Introduced at this month's Consumer Electronics Show in Las Vegas, the
new language also has a more glamorous pedigree than most software, being an
offshoot of the language used to create special computer effects in the movie
"StarWars."  Called Grafix, the self-teaching, user-expandable language is to
be a major feature of Bally's Level III home computer when it hits the market
during the third quarter.  The firm previously introduced a Level I computer
that operates with read-only memory cartridges containing video games.
  Creative.  Basic's mnemonics and typical programming-like syntax, such as
HLIN for horizontal line and VLIN for vertical line, could confuse potential
users.  Instead, the Level III program allows users to create graphics by using
words like "circle" and "box," according to Robert Wiles, general manager of
the Franklin Park, Ill., company's Consumer Products division.
  When a user is uncertain how to specify a figure, its position, or its color,
he or she can type in "help," and the computer will begin a sequence of
directives that show the proper method.
  Users add new words to the Grafix vocabulary simply by programming graphics
subroutines and then naming them.  In this way, the language can be expanded
to the limits of available memory.  At present, the system contains 32
kilobytes of read-only memory and 20 kilobytes of random-access memory, and
provisions exist for adding memory accessories later, according to Wiles.
  Grafix was developed by a team of programming engineers led by Tom DeFanti,
professor of computer sciences at the University of Illinois, who created the
software for "Star Wars."  The language is loaded into Level III from a
software cassette.  Whereas Ballys Z80-based computer can interface to a
black-and-white television set or monitor, it is best to attach it to a color
set in order to make full use of its 256-color capability.
  A Level III computer is built by adding the special programming keyboard and
Grafix software to Bally's Level I video console.  The $300 video console is
available now, and the $650 keyboard and software cassettes will be ready
during the summer, Wiles says.                                             []

Electronics/January 18, 1979



Some corporate words to sales-oriented readers. -->
                                                                ADVERTISEMENT
We're serious about fun and games.  Consumer [section]

At Bally, we're in the business of helping people have fun.  Since we
introduced our first wooden pinball game in 1931, we've become the world's
leading producer of coin-operated amusement and gaming equipment.  And
along the way, we became the first US. manufacturer to use integrated
electronics in our complete line of pinball games.
  But Bally is helping people have fun in more ways than that.  For the
past few years, we've been entering new areas of growth and expansion.  As
an operator of 109 Aladdin's Castle arcade amusement centers.  As a major
manufacturer of home pinball machines and electronic TV games.  And as the
owner of a 9-acre tract at the intersection of Boardwalk and Park Place
in Atlantic City, where we'll build a luxury hotel-resort-casino.
  Of course, we're not only making fun for consumers.  We're also bringing
smiles to our stockholders.  In 10 years, we've grown from sales of $30
million to $245 million in 1977  up 18% over 1976.  Our 1977 earnings of
$19 million  up 59% over 1976 levels - set a new record.  Most importantly,
our return on average shareholders' equity in 1977 was 21%... putting Bally
in the top tier in this regard among all major U.S. corporations.
  Our employees are happy, too.  We now provide jobs for some 5,000 people
at 19 plants and offices in the US. and overseas.
  Our changing product mix includes electronic components that we manu-
facture and supply for other makers of commercial and consumer products,
both in and outside the amusement industry.  And that makes both our
suppliers and our customers happy.
  Through our diversification, expansion and growth - and achievement of
record revenues and earnings - our management also has much to be pleased with.
  At Bally, it's fun being serious about fun and games.

Bally [script logo] Manufacturing Corporation
2640 West Belmont Avenue
Chicago. Illinois 60618

CHAIN STORE AGE. General Merchandise Edition, June 1978, pg. 17

-------------------------------------------------------------------------------
Page 29 - [no text]

[Bally COMPUTER SYSTEM  VIDEO CONSOLE AND PROGRAMMING KEYBOARD grayscale photo]

-------------------------------------------------------------------------------
Page 30 -

_MUNDANE ITEMS_ for the back page:
    * You will note a change in page numbering.  Since a subscription is to an
annual volume on a Nov to Oct basis, the page numbering should be consistent.
Issues 1 to 3 contained the first 22 pages for this volume.
    * The RS-232 connector mentioned last time turns out to be salvage Bally
connectors with cable.  Apparently scrapped because of improper wire color
coding, but certainly adequate for our experimental purposes.


Audio Tape Control
  With the Bally BASIC audio cassette interface accessory you can store
programs on audio tape, play Bally software cassettes and exchange programs
over the phone.

[Cassette Tape Interface photo not included]
  The following control words are used to store and play back programs.

:PRINT ;LIST records program from computer memory to audio tape
:INPUT plays back program from audio tape into computer memory
as listing shows on TV screen.
:RETURN turns off audio cassette interface after program has been loaded
into computer memory.
:LIST plays back program listing to TV screen only  not into memory.

For more information about the latest Bally BASIC software and accessories,
see your Bally dealer or write:
          Bally BASIC
          Bally Consumer Products DiViSion
          10750 West Grand Ave., Franklin Park, Ill. 60131


Keypad Inputs  ------->                      &(23)   &(22)   &(21)   &(20)
CHECK                                      +-------+---|-\___/-----+-------+
While running a program you can check      |  ___  |  _|_  |  ___  |  ___  |
to see if a key has been pressed on        | [___] | [_|_] | [___] | [___] |  1
the keypad.                                +-------+---|---+-------+-------+
EXAMPLE:                                   |  ___  |  _|_  |  ___  |  ___  |
  10 IF &(22)=4 PRINT 5                  | [_7_] | [_|_] | [_9_] | [___] |  2
  20 GOTO 10                               +-------+---|---+-------+-------+
                                           |  ___  |  _|_  |  ___  |  ___  |
WAIT                                       | [_4_] | [_5--------------------> 4
When you want your program to wait for     +-------+-------+-------+-------+
a key to be pressed use the KP command.    |  ___  |  ___  |  ___  |  ___  |
To see the numbers assigned to each key    | [_1_] | [_2_] | [_3_] | [___] |  8
use this program.                          +-------+-------+-------+-------+
  10 A=KP                                  |  ___  |  ___  |  ___  |  ___  |
  20 PRINT A                               | [___] | [_0_] | [___] | [___] | 16
  30 GOTO 10                               +-------+-------+-------+-------+
                                           |  ___  |  ___  |  ___  |  ___  |
                                           | [___] | [___] | [___] | [___] | 32
Music Synthesizer                          +-------+-------+-------+-------+
  Setting these registers to a
value between 0 and 255 allows you
to control the music synthesizer module.
For example: &(23)=255;&(21)=255 sounds like a rocket

        &(16) master oscillator           &(20) Vibrato
        &(17) oscillator A                &(21) Noise controlx16 + vol C
        &(18) oscillator B                &(22) Volume Bx16 + vol A
        &(19) oscillator C                &(23) Noise volume

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]

Robert Fabris, Staff
3626 Morrie Dr.
San Jose. CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 05] =========================
Page 31 - [originally at the bottom.]
[Brett Bilbrey misspelled as Bilbray]

[Volume I] NUMBER 5                                           March 23, 1979

_PROGRAMMING KEYBOARD_ status is a mixed bag.  Bally still seems to have a
July-August date for the appearance of the Keyboard.  But there is an internal
question now going on at Bally that asks if it might not be better to have a
$300. Keyboard with lesser capability (but expandable).  The marketing surveys
they have been running have indicated some kind of resistance (understandable)
to a $600+ unit.  They have worked up a piece of hardware as a mockup to use
internally for evaluation.  But the decision (300, 600, maybe both?) must come
soon if a 12-16 week production span is needed after go-ahead to stay within
the 3rd Quarter window they had set up last year for availability.

_HACKER'S MANUAL_ has appeared.  I understand that it is being distributed by
some dealers as an addendum to the regular manual.  If your dealer does not
have a copy of this 18-page document for you, I can make a copy and ship it out
for $2.  Most of the data has already been included in the various issues of
the ARCADIAN as our fellow subscribers have discovered them on their own.  The
'new' material includes: some words on the I/O ports, a few words on the light
pen interface, a block diagram of the sound synthesizer and description, and
considerable detail as to wiring changes in the cassette interface to allow
the addition of a printer jack.

_LATE DATA_ on product availability...
     2005       Star Battle                  $19.95 - out in February
     2007       Pinball                       24.95 \
     3003    Grand Prix/ Demolition Derby     19.95  |
     3004    Desert Fox/Drag Race             19.95  >  March
     4004       Music                         24.95  |
     5003    Backgammon/Checkers              19.95 /

_INTERACTIVE PROGRAMMING_ is being worked on by Jim Unroe. This is a scheme
by which two machines can talk to each other via the cassette interfaces.

_INTERCONNECTION_ to the S.D. Sales Z-80 CPU BOARD (kit $139., P.0. Box 28810
Dallas 75228 is being explored by Pete Wishart up in Canada. He has developed
a wiring scheme to to into the 50-pin connector on the back of the Arcade and
wind up with an S-100-compatible interface.  Still some bugs to be worked out.

_DEALER_ in the Arkansas area is J.W. Taylor, 611 North 2nd, Cabot, 72023
who has an extensive supply, and I believe sends items postpaid.

_LETTERHEAD_ of this issue was donated by Herb Weintraub.  It is an interesting
idea.

_MENU_ can be called up by the following, donated by Martin Nason:
     10 INPUT K
     20 CALL K         insert 3174
The menu will appear, and function fully (don't use the BASIC overlay card)
but why does it _not_ work if you just CALL 3174?

-------------------------------- arcadian -------------------------------------
Page 32 -

_ONBOARD CALCULATOR_ was very briefly mentioned in January.  Here is some
data on this feature.  With this routine, it is possible to perform the four
arithmetic functions with decimals, and use numbers much bigger than the Tiny
BASIC limitation of 3276?.  But it takes up a lot of space.  The operation is
listed as $ N @(A), @(B), @(C) where N is the desired function + - [divide] x
    A is an input address, B is an input address, and C is the answer address.
Each address is the beginning location of an 18-consecutive string, so that
we could have A extending from O to 17, 18 to 35, 36 to 53, etc.  B and C
are similar. Within each of these sets, the decimal point is located at the
near-center, the sign of the number is at the end, adjacent to an overflow
indicator.  Here is an illustration:
sign: 0 = + \--------\
      B = - /       +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
               @( ) |17|16|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
                    +--+--+--+--+--+--+--+--+--+--.--+--+--+--+--+--+--+--+
overflow if Not = 0 ----/                          \-- decimal point

     Each digit of each input must be loaded independently, as well as its
sign.
     As an example, let us multiply 374.2913 by 96.7 to get 36193.96871 :
Note the location of the decimal point and work from there -
Load the first input:
     10 @(10)=3;@(9)=7;@(8)=4;@(7)=2;@(6)=9;@(5)=1;@(4)=3
Load the second input
     20 @(27)=9;@(26)=6;@(25)=7
The registers will look like this:
               @( ) +17+16+15+14+13+12+11+10+9-+8-+7-+6-+5-+4-+3-+2-+1-+0-+
                    | 0| 0| 0| 0| 0| 0| 0| 3| 7| 4| 2| 9| 1| 3| 0| 0| 0| 0|
                    +--+--+--+--+--+--+--+--+--+--.--+--+--+--+--+--+--+--+
               @( ) +35+34+33+32+31+30+29+28+27+26+25+24+23+22+21+20+19+18+
                    | 0| 0| 0| 0| 0| 0| 0| 0| 9| 6| 7| 0| 0| 0| 0| 0| 0| 0|
                    +--+--+--+--+--+--+--+--+--+--.--+--+--+--+--+--+--+--+
List the Operation:
     30 $x@(0),@(18),@(36)             ; RUN
The answer register looks like this:
               @( ) +53+52+51+50+49+48+47+46+45+44+43+42+41+40+39+38+37+36+
                    | 0| 0| 0| 0| 0| 3| 6| 1| 9| 3| 9| 6| 8| 7| 1| 0| 0| 0|
                    +--+--+--+--+--+--+--+--+--+--.--+--+--+--+--+--+--+--+
and to recover it, include
     40 FOR A = 53 TO 36 STEP -1
     50 TV=@(A)
     60 NEXT A
Which will yield        000003619396871000
This technique will suppress the leading zeros - adjust the values in lines
70 and 80 to fit the location of your answer address:
     60 Z=1
     70 IF @(53)=8" PRINT "-"       .If answer is a negative
     80 FOR B=52 TO 44 STEP -1
     90 IF @(B)="0" IF Z GOTO 120
    100 Z=0
    110 TV=@(B)
    120 NEXT B

The locations A, B,and C can be mixed up, or set equal to each other, or
use other locations for memory, saving them for later use.

-------------------------------- arcadian -------------------------------------
Page 33 -

_FORMATTING_(PRINT #N)_ The following is a contribution from Tom Wood with
some of my added comments and example.  " A PRINT statement containing a #N
value is most interesting.  Apparently the value for N following the # sets
the size of a 'window' to be left on the screen for each variable in the
statement.  Variables will be printed right-justified within that window.

  A = 34; B = 973; C= -88; PRINT #4,A,B,".",C  yields the following -
             +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
             |   |   | 3 | 4 |   | 9 | 7 | 3 | . |   |   | - | 8 | 8 |
             +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
We created a window of 4 character spaces wide for each variable on the
PRINT line, noting that . is not a variable.  The window is effective for
the entire PRINT line, or until there is another #N " - Wood.

This gives you the capability to create tabulated columns across the screen
To get This:                   Program this:
                                  10 A=391;B=7721;C=271;D=8143;
     JOHN DOE   391-7721             E=814;F=6392
  BILL WILSON   271-8143          20 PRINT "   JOHN DOE",#6,A,"-",#4,B
  HARRY JONES   814-6392          30 PRINT "BILL WILSON",#6,C,"-",#4,D
                                  40 PRINT "HARRY JONES",#6,E,"-",#4,F

With the Onboard Calculator routine giving decimal calculation, you can
start setting up material necessary for payroll accounting with answers
in nice neat columns.  Has anyone done any business programs?

_PROGRAMS HERE_, contributed by subscribers, include such games as CHECKERS,
STRATEGY FOOTBALL, SLOT MACHINE, BALLY TREK, etc., and which are quite lengthy.
I really haven't had time to give them a good scrubbing, but plan on doing so
next month, and have them available for subscribers.  I finally received a
box of C-10 tapes from Microsystems, so now I can get organized.

_PROGRAMS DIRECT_ from subscribers:
o  Bob Weber 6594 Swartout Rd., Algonac MI 48001 has the following available
at $2 plus a C-30 tape:
     SUB SEARCH                ALIEN PATROL             CALENDAR
     SLOT MACHINE              CONCENTRATION            TIC TAC TOE
     FLIGHT SIMULATOR          HANGMAN                  MATH QUIZ
     OTHELLO                   MASTERMIND               SPACE CHASE
o  Ron Schwenk 6988 Lincoln Creek Circle, Carmichael CA 95608
     MASTERMIND                ONE CHECK                BATNUM
o  Bob Strand 10665 E. Foix Ave., Norwalk CA 90650  $7 for the lot...
     STAR BATTLES              4 DIGIT GUESS            REMEMBER
     ANGLE GAME                SLOT MACHINE             NUMBER WAR
     LUNAR LANDER (enhanced/ expanded)
o  George Hale P.O. Box 186, Lee's Summit MO 64063 has a shoot-it-down type
of game for two that he calls SONIC SATELLITE.  This will be available as
a listing for $4., as a cassette tape @8.50, or loaded on your tape @$6.50.
George will be selling Bally-oriented goods through Applications Programming
Enterprise.

_FOR SALE_  Bally ARCADE with BASIC, CLOWNS, and BASEBALL, $275. W.KIM,
776 Via Catalina, Burbank, CA 915011 (213-767-3963)

-------------------------------- arcadian -------------------------------------
Page 34 -

_MEMORY MAP_                                  Decimal       Hexadecimal

 On Board ROM                                 0 to  8191         0 to 1FFF

 Bally BASIC ROM                           8192 to 12287      2000 to 2FFF

 Screen Memory Area                       16384 to 20479      4000 to 4FFF

    Bally BASIC Graphics/Program Area     16384 to 19983      4000 to 4E10

    Bally BASIC Scratchpad Memory Area    20000 to 20463      4E20 to 4FEF

    Tape Input Buffer                     20002 to 20049      4E22 to 4E51

    Variables begin at                         20078              4E6E

    Line Input Buffer (104 characters)    20180 to 20283      4ED4 to 4F3B

    Stack Area                            20284 to 20462      4F3C to 4FEE

 Text Area [de-interlaced pseudo-memory] -24576 to -22777     A000 to A707

 Note Lookup Table                             12046         2F0E for CR(13)

The above was extracted from the Hacker's Manual.

_SPACE SAVER_ has been located by Bob Weber - If a PRINT "X" is not followed
by another command, the final " is not needed.  A byte saved is a byte
available for another statement.

_ANOTHER DIVISION ROUTINE_ that prints a decimal answer has been developed
by Pete Bowman, This one is a bit laborious as you have to enter a @( )
for each decimal wanted, in line 80.
   10 PRINT "X- Y = Z"       50 FOR W = 1 TO N  (where N is the number of
   20 INPUT "X=?" X                              decimal digits desired)
   30 INPUT "Y=?" Y          60 @(W) = (RM*10) [div] Y
   40 Q = X [div] Y          70 NEXT W
                             80 PRINT"Z=",#1,Q,".",@(1),@(2),@(3), ...@(N)

_NOTE TIME_ has been noted by many to control speed of operations to some
extent.  Setting it =0 makes things operate the fastest.  Negative numbers
yield very slow results.  You can also go back and forth to tape faster
with :PRINT;NT=1 ;LIST   Using NT=0 here doesn't always work.

_INCLUDED_ this month are short enough to put on a page.  The form that
I used was provided by Chuck Thomka, 1228 W.222 St., Torrance CA 90502.
It iS a handy way to keep things in order.  Program listing should be
reviewed as a training aid, to help in your own understanding.

--------------------------------------------------------------------------------
Page 35 - [SIMON listing by Brett Bilbrey and Joe Borrello - not included]

--------------------------------------------------------------------------------
Page 36 - [CLOCK listing by J. COUSINS - sideways - did not scan]

--------------------------------------------------------------------------------
Page 37 -

_ZGRASS COMMANDS_ are listed here. [in addition to Tiny BASIC commands]
These are some of the unique ones planned for the Keyboard's language.
The machine I saw had a total of 66 commands.  This page followed "page 36"
of the article reproduced in ARCADIAN #2, pages 11 to 14

command name    function

box             draws a rectangle on the screen & has options for building
                picture prototype lists
*change         changes the values of an endpoint in a picture prototype list
circle          draws an ellipse on the screen & has options for building
                picture prototype lists
clear           clears the screen
*close          closes off an open picture prototype list
colors          chooses 4 colors of 256 for screen use
*compile        compiles code for speed
copy            makes a copy of a picture prototype with a new name
delete          deletes and reclaims storage of a named thing
display         causes a picture prototype to be exclusive or'ed onto
                the screen and be updated when necessary
*film           sets up filming mode for a Super 8 camera
*fetch          retrieves a given endpoint in a picture prototype list
get             gets a macro, array, picture prototype list, etc.
                from tape, disk, etc.
group           collects picture prototypes into a group which can be
                referenced with a single name. Transformations may be
                done to the group as a whole or to individual members.
help            prints commands and required argument types
ieee            provides interface to IEEE bus
input           used to input numbers, strings from terminal
                or passed argument lists
line            draws a vector & has options for building
                picture prototype lists
memory          gives a usage map of memory
move            attaches a picture prototype to two variables, devices, etc.
                so that when they change, the prototype is automatically
                erased and redrawn in the new position with options for
                "exclusive or" or "load/store" read and write to screen
*onerror        traps errors to a user's routines
*open           allocates storage and starts up a picture prototype list
*pattern        allows a pixel list to be directly built rather than snapped
play            interprets a string, array or picture prototype as a
                musical score to be played by the three-voice synthesizer
put             stores a macro, array, picture prototype list, etc.
                on tape, disk, etc.
rename          renames a named thing to a new name
*rotate         like move but the prototype is rotated
*scale          like move but the prototype is scaled
select          causes picture prototypes to be switched
                round-robin fashion on the screen
snap            takes a screen image in rectangular bounds
                and makes it into a movable picture prototype
sync            tells the system how much time to devote to
                interrupt-level updating versus command processing
*vip            allows a macro to be executed at interrupt level
                (stands for "very important program")

[note: The commands beginning with a '*' are in the 16k extension.]

-------------------------------------------------------------------------------
Page 38 - [REVERSE by Brett Bilbrey program listing - sideways - did not scan]

_GAME INSTRUCTIONS_ These games were sent by Brett Bilbrey who welcomes
comments and suggestions at 14430 Barclay, Dearborn, MI 48126.
     SIMON: One player, Hand Controller
            The computer shows you a pattern that you have to repeat,
            using joy stick controls.
     REVERSE: One player, Hand Controller
            The object is to get 9 number in order (smallest at the left)
            that are initially in random order. Use the knob to identify
            the numbers to be moved, and the trigger to move them.

     REVERSE CORRECTIONS (from page 46)
       Revise line 260 CY=-20;PRINT"   YOU WON IN",;TV=T[divide sign]10+48;
                       TV=T-T[divide]10x10+48;PRINT "MOVES"
                   270 GOTO10
                   280 CX=-50;CY=0

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, Boss
3626 Morrie Dr.
San Jose, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 06] =========================
Page 39 - [originally at bottom.]

VOLUME 1                        May 4, 1979                       Number 6

_APOLOGIES_ are in order to all beacause I didn't give the games REVERSE
and SIMON a good going-over before printing them, and there are a number
of errors.  Since then, Brett has also managed to simplify SIMON, and the
corrections to both appear later on.  By the way, unless you fellows and
gals are really desperate, I think that questions,etc., by mail would be
more completely answered by the contributors instead of by telephone.

_SYMBOLS_ that I have been using may have caused some confusion.  Firstly,
I slid into using an asterisk * for the multiplication sign in the hand-
written programs last issue, forgetting that there is an asterisk symbol
on the keypad.  From now on I will use a small x for multiplication.  Next,
the symbol # is sometimes used for the 'not equals' [or / overstruck =]
(because it takes only one key stroke of the typewriter).  In the Bally,
this does mean 'not equals' when preceded by IF, and it is also used to
describe a format convention for the tabulation function when preceded
by PRINT.  Symbol [/ over 0] is used for the numeral zero to avoid confusion
with the letter 'O'.  Symbol [-'ed 7] is sometimes used for the numeral seven.

_UTILIZATION_ of the Bally by one of our subscribers is unique.  They operate
a TV booster system, capturing long distance TV signals on mountain tops and
rebroadcast them into valleys that normally lie in a 'shadow'.  The Bally is
used to insert 'commercials', and programs are developed using the graphics
capability to generate logos, and the &(9) and &(10) are used for screen wipes,
color changes, etc.

_SEMINARS_ are being planned at a couple of locations, being developed by
local dealers.  One is being considered in Indiana where all levels of users
would be accommodated, while the other is a bit farther along.  This group
will be having a get-together at 2pm on May 12 at the Computer Center,
28251 Ford Rd., Garden City MI, (422-2570).

_TRANSLATIONS_ of the various BASIC dialects are contained in the new book,
The BASIC Handbook by David Lien, published by CompuSoft Publishing Co.,
P.O. Box 19569, San Diego CA 92119, for $14.95 + 1.35 post + CA tax.
I understand that it has 250 statements in BASIC with their meanings, plus
conversion ideas to other dialects.  There is a review in the April issue
of Creative Computing, pg. 143; and an ad in May Kilobaud, pg. 81.

_PROJECTS_ who is working on what - and what is your status? We'll get some
of you together so's you only invent the wheel once.  Have any of you been able
to use another computer's printing facility to list out the Bally programs?

_MENU_ as mentioned last time was brought up with a little program, but I've
had notes that plain CALL 3172 or CALL 3177 will do it.

_TUTORIALS_ (Hows and whys) are needed in the ARCADIAN in order that we
can learn more about the machine and its operation.  The talents of our
subscribers run the gamut from the tyro to the professional, and for many
of us it is necessary to do things in a cook-book manner, not understanding
what we are doing or why.  Explanations such as those that follow are going
to be of great value to us as we plod ahead.

-------------------------------- arcadian -------------------------------------
Page 40 -

_TUTORIAL_ (1)  SCREEN OPERATIONS, by John Perkins.

    The screen is divided into a left and a right side with a movable boundary.
    The following outputs prevail:
        &(0)=right side register 0    &(4)=left side register 0
        &(1)=  "     "     "     1    &(5)=  "   "      "     1
        &(2)=  "     "     "     2    &(6)=  "   "      "     2
        &(3)=  "     "     "     3    &(7)=  "   "      "     3
          bit; +7-+6-+5-+4-+3-+2-+1-+0-+
               |     color    |  shade |  [really brightness 0-7]
               +--+--+--+--+--+--+--+--+
                                 __________
                         /------/--->  |   \        [outports 9 and 10]
  background area ------/      / +----------\
                        \------+>|     |<---+------ left/right boundary
      [4x3 TV screen]          | |     |    |
                                \+---------/<------ memory partition
                                 \_____|__/

Bally BASIC continually sets &(4) and &(5) to the color/shade defined by
BC, and &(6) and &(7) to the color/shade defined by FC.  These are fixed
while BASIC is in control.  But by moving the boundary so that the right
side is visible, we can then control 4 different color/shades by using
the &(0) thru &(3).  Example:
    &(0)=30;&(1)=85;&(2)=153;&(3)=125;&(9)=0
Three colors are displayed - listing, background, and 'garbage' at the top.
More on this later.  The fourth color should be visible as we scroll the
text into the upper border area.  With &(9) at some other value, such as 10,
the screen is divided and the FC and BC commands allow two more colors on
the screen.  Actually, &(9) has two functions:
       bit number: +--7--+--6--+-5-+-4-+-3-+-2-+-1-+-0-+
                   | Right B.G.|  Left/Right Boundary  |
                   |___color___|____[0 to 40 bytes]____|

The least significant 6 bits set the boundary position (4 pixels or one
memory byte per unit).  The most significant 2 bits choose the color register
associated with the left side background and the right side background.
Try &(9)=135.
The 'garbage' mentioned above is actually the stored program, in the
screen memory, using the even bit positions.   +7-+5-+3-+1-+6-+4-+2-+0-+ mixed
Each pixel equates to two bits of memory       |  Screen   |  Program  | bits!
4 pixels to an 8 bit byte.  The two bits       +--+--+--+--+--+--+--+--+
of each pixel can have 4 representations:           ODD        EVEN
               00 = &(4) left   or &(0) right      [interlaced byte]
               01 = &(5) left   or &(1) right
               10 = &(6) left   or &(2) right
               11 = &(7) left   or &(3) right   When Bally BASIC sets the
screen boundary ( &(9) ) all the way to the right, then only the left
registers &(4) to &(7) are used.  Since it also sets &(4) and &(5) to BC,
and &(6) and &(7) to FC, only the odd bits of memory show on the screen.
   a 00 is the same color as an 01, and a 10 is the same color as a 11
By storing the program in the even bits it can occupy screen memory ( as
every other bit) and yet be invisible.  However, by moving the boundary to
the left, the right-side registers are used, and since the program above
set these to different colors, the stored program becomes "visible" as the
garbage at the top of the screen.

&(10) controls how many raster lines are displayed from memory as opposed
to being part of the background.  &(10)=204 displays all of memory (RAM)
allowing visual inspection of the running program.

-------------------------------- arcadian -------------------------------------
Page 41 -

_TUTORIAL_ (2) EXPLANATIONS by Jean Taillefer.
   * _IF_ statements will execute as a TRUE condition if the value of the
     expression results in a value greater than 0.  (The expression could be
     a calculation.)  If the value is 0 or negative, the IF statement
     regards the condition as FALSE.
     Example: IF TR(1) GOTO 100     .will branch to 100 if TR(1) is = 1
     IF A GOTO 110                  .will branch to 110 if A is greater than 0
   * _AND_ may be expressed in many ways.  The most common form being
     IF A=3 IF B=E GOTO 120         .will branch to 120 if and only if A=3
                                     and if B=0
     IF(A=3)=(B=0) GOTO 120         .does the same thing
   * _OR_ conditions, where you want to jump if either of some conditions are
     true, can be done by
     IF A=3 GOTO 130
     IF A=6 GOTO 130
     IF A=7 GOTO 130                .meaning that if A is either 3, 6,or 7,
                                     the program will jump to 130

     IF(A=3)+(A=6)+(A=7) GOTO 130   .does the same thing

   * Self-starting programs can be made by inserting the line
              1 :RETURN at the beginning, and use this at the end to store on
     cassette- NT=1; :PRINT ;LIST ;PRINT "CLEAR;RUN"


_TUTORIAL_ (3) DATA STORAGE by Bob Weber.
     This subroutine would be called up in order to save the program, the
     registers, and the strings by using a GOTO 9000.
          9000 :PRINT ;LIST
          9010 FOR Z = 1 T0 26      .less, if you don't have that much
          9020 TV = Z + 64           register storage
          9030 PRINT #1,"=",%(20076+(Zx2))
          9040 NEXT z
          9050 FOR Y = 0 T0 N       .where N is the number of strings
          9060 PRINT #1,"@(",Y,")=",@(Y)
          9070 NEXT Y
          9080 PRINT "RUN

_CHECKERS GAME_ listing by John Collins, 713 Bradford Drive, Ft.Walton Beach,
FL 32553 is included.  There is an amazing amount of activity in this game,
that is comparable to the $75. 'Checker Challenger'.  Before the machine makes
a move, it goes thru some steps, and numbers appear to tell you where it is.
The code for the steps is:
              1. the computer has found that it can jump one of your men
              2. checking to see if you can jump it
              3. is a corner open?
              4. is there an open move?
              5.& 6. have the computer's men moving either to get kinged
                 or towards any player's man left
              7. any move an unkinged computer's piece can make
              8. any move
To indicate a double jump, enter the two numbers (of the square you go thru
and the landing square) as if it were a single jump only.

--------------------------------------------------------------------------------
Page 42 - [CHECKERS - sideways - did not scan]

-------------------------------- arcadian -------------------------------------
Page 43 - [MEMORY DUMPS AND LOADERS - did not scan]

--------------------------------------------------------------------------------
Page 44 - [another MEMORY DUMP and RANDOM ART - did not scan]

-------------------------------- arcadian -------------------------------------
Page 45 -

_MACHINE LANGUAGE PROGRAMMING_  A further step along the way was taken by Glenn
Pogue, who modified the "game over" routine of pg. 25, making it print the word
ARCADIAN in 2x normal letter size.  I have not been able to totally duplicate
this feat, I think it lies in the small differences in ROM locations that have
previously been noted.  The total program is:
    9 CLEAR
   10 A=20180;B=A;C=1               .ref pg. 34 "LINE INPUT BUFFER from 20180"
   20 X=-43;GOSUB C                 .lines 20 to 60 call subroutine 52 and
   30 X=53;GOSUB C                   define the required parameters for the
   40 X=27672;GOSUB C                7O to 100 part to work, and get back to
   50 X=20190;GOSUB C                the BASIC
   60 X=-13871;GOSUB C
   70 X=21057: GOSUB C              .lines 70 thru 100 insert the letters per
   80 X=16707; GOSUB C               the scheme shown below.
   90 X=18756; GOSUB C
  100 X=20033; GOSUB C
  110 CALL (B); STOP                .Displays the contents of memory slots
  120 %(A)=X; A=A+2; RETURN         .POKEs the values of X into memory slots

From page 49  This program can be 'clarified' by replacing line 105 with the
statement X=0; GOSUB C .  The zero will step the machine's printing after it
finishes the AN of ARCADIAN.  What is happening is - the machine has been set
into a printing mode and it keeps on going until it hits an internal halt.
The X=0 sets such a halt thru the POKE function, where you want it.

To convert the word ARCADIAN into machine language, each character is converted
into its hexadecimal equivalent (use chart on pg. 16.)  They are then paired
off, each pair is swapped, and the new pair converted into decimal, as follows:

     Desired characters                A  R   C  A   D  I   A  N
     Hexadecimal conversion           41 52  43 41  44 49  41 4E
     Pair off                          4152   4341   4449   414E
     Swap within pair                  5241   4143   4944   4E41
     Convert to decimal (use routine
      on page 36)                     21057  16707  18756  20033
And these are the values of X in lines 70 to 100.
My operation did not give a clear display.  There was more material on the
screen, some of it seemed to be overprinting.  I inserted line 105, X=12336;
GOSUB C, to add some known characters (00), and I could then see the first part
of line 20-> 20 X = -43 in giant letters.
The program is presented for the experimenters in the audience who would like
to have something more unusual.  The program has more potential because the
root subroutine, 52, has many capabilities.

LETTERS from ARCADIAN subscribers to Bally, detailing what their desires would
be in the capability of the Programming Keyboard might help the Bally manage-
ment to move ahead on this project.  The Director of Sales is Mr. J. Nieman,
Bally Consumer Products Div., 10750 West Grand Ave., Franklin Park IL, 60131.

SIMON CORRECTIONS: Make the following changes in the program:
  Revise line 10 CLEAR;&(0)=7;&(1)=7;&(2)=0;&(3)=0;&(9)=30; NT=0;CX=47;CY=20;
                 PRINT "SIMON";B=7;A=0;CX=47;CY=-20;PRINT "SCORE:";NT=5
  Delete lines 70, 80, 90, 100, 160, 170
  Add lines    70 FOR X=1 TO A
               80 GOSUB @(X)x1000
              155 IF D=1 GOSUB 1000; GOTO 170
              160 IF D=2 GOSUB 2000; GOTO 170
              164 IF D=3 GOSUB 3000; GOTO 170
              166 GOSUB 4000
  Revise line 150 IF D [.ne.] @(X) NT=55;MU=33;MU=48;MU=48;NT=3;FC=0;GOTO 10

  In lines 1000, 2000, 3000, 4000 delete the -2xA after 1 TO 255

--------------------------------------------------------------------------------
Page 46 -

_ADS_ Six programs available: Horserace,$3.; TicTacToe,$1; Craps 2, Startrek,
      Slot Machine, Connect Four, at $2. each.  All six for $10.  Include a
      C-30 tape for programming.  Or listing for half price.  All games except
      Startrek have graphics.  S.Waldinger,24740 Woodcroft Dr,Dearborn MI 48124

      Conversions from Hex to Decimal, Decimal to Hex, and Binary to Hex and
      Decimal.  All on one tape for $5.  Robert Strand 10665 E. Foix Ave.,
      Norwalk CA 90650

      The listing for Bob Weber's ad last month should have been:
      Bob Weber 6594 Swartout Rd., Algonac MI 48001 has the following available
      for $2. each plus a tape long enough to accept 4 minutes per program.
      Or $3. each on Bob's tape.
         SUB SEARCH         ALIEN PATROL                 CALENDAR
         SLOT MACHINE       CONCENTRATION                TIC TAC TOE
         FLIGHT SIMULATOR   HANGMAN                      MATH QUIZ
         OTHELLO            MASTERMIND                   SPACE CHASE

      A total of 21 games are available from Jean Taillefer, 115 Northwestern
      Ave., Ottawa, K1Y 0M1 Canada, at costs of $1 for one minute, $2. for
      three, and $3. for a five minute program (you supply the tape).
      Or the listing is half price.  Send for a list of those available.

      ARCADE plus 'cades: 2002,2003,2004,3001,3002,5002, plus DEMO Basic and
      DEMO cassette interface. (these will not do the tricks we talk about)
      total $300. D. Choinsky, 1748 Wiese Ln, Racine WI 53006 414-886-9316

      Two sets of programs available: Set_I GAMES- Cheese Boxes,Random,Siren,
      Slot Machine,Color Match,Rock/Paper/Scissors,Memory Match,Building Blox.
      Set_II VIDEO ART-Wallpaper,Rnd Line,Rnd Box,Color Box,Scroll 1,2,3,
      Electric Doily,Color War,Color Wheel,RubberBand, Laser Duel,Spiral,
      Reverse Box,Perspective Box.  Prices are On His Cassette, $8/Set or
        $10/both               or On Your Cassette, $4/Set or $ 6/both from
      D. Stocker 333 Coronado Dr Mt.Vernon, IN 47620

_REVERSE CORRECTIONS_
  Revise line 260 CY=-20;PRINT" YOU WON IN",;TV=T [div] 10+48;
                  TV=T-T [div] 10x10+48;PRINT "MOVES"
              270 GOTO 10
              280 CX=-50; CY=O

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, proof reader [new title]
3626 Morrie Dr.
San Jose, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 07] =========================
Page 47 - [at the bottom.]

NUMBER 7    VOLUME ONE                                   June 15, 1979

_CHECKERS_ in the last issue had one typo; in line 1220 where part of the line
read:        @((S+R)+2)=3;    and it should have read:    @((S+R) [div] 2)=3;
An error an line 8 had too many zeros at 30000.
I've had many comments on this program, all pleased with the effect and
operation (once the glitch was cleared up).

_PROOFREADING_ of listings is getting better, and hopefully I'm not going to
have any more problems as I as now sending a copy of the ready-to-print listing
to the author for his last minute check.

_GIANT LETTERS_ program on pg. 45 can be 'clarified' by replacing line 105 with
the statement  X=0; GOSUB C .  The zero will stop the machine's printing after
it finishes the AN of ARCADIAN.  What is happening is - the machine has been
set into a printing mode and it keeps on going until it hits an internal halt.
The X=0 sets such a halt thru the POKE function, where you want it.

_CONNECTORS_ for the 50-pin expansion port is a standard printed circuit
device, with 25 double-sided pins on 0.1 inch centers.  I understand that the
APPLE II uses this as well as the SHUGART disc drive.  There are some of these
on the surplus market here, 3M No. 3415, and I can supply these at $2.50 ppd,
including a 3" bit of flat cable that you could solder to.

_KEYBOARD_ project in work utilizes a CHERRY brand (?) keyboard wired
in parallel with the keypad with some buffers so that either can be used.
All letters and characters are where they belong, while the shift key allows
the generation of the various WORDS.  The Keyboard is the one advertised by
JAMES ELECTRONICS, 1021 Howard Ave., San Carlos CA 94070, at $29.95. "63 Key
Uncoded keyboard".

_PRINTER_ project has been made to work, using a Type 43 Teletype machine and
a kit for an interface available from ELECTRONIC SYSTEMS, P.0. Box 21638, San
Jose, CA 95151, their part #232A at $7. plus postage.  I saw an ad of theirs
in KILOBAUD, April, pg. 172.  The schematic of this kit is included for you
scratch-builders:
                  12+ |     [no connection  +--------------------------+ |... |
                      +--+------\  between  |                          | |\\\ |
  ~~~~~~~~~~~~~       |  |      |   2 & 3]  | RS-232 / TTL * INTERFACE | |X///|
  NEW PLUG IN  |  15K Z  Z 15K  |           |                          | [blob]
  CASSETTE     |      Z  Z    |\|7  330     | * Converts TTL to RS-232,  |//\X|
  INTERFACE AS __     |  |   2| \ 6     OUT | and converts RS-232 to TTL +----+
  DEFINED IN =[__|=---+--|----|741>-NN-+->  | * Two separate circuits *   [end]
  HACKER'S     | -=-  |  +---3| /      |    | Requires -12 and + 12 volts
  MANUAL       |  -   Z  Z    |/| 100pf=    | * All connections go to a 10
  ~~~~~~~~~~~~~   10K Z  Z 2.7K |      |    | pin gold plated edge connector
                      |  |      |      |    | * Board only $4.50 Part No. 232,
     [Grounds ==>]   -=--=-    -=-    -=-   | with parts $7.00 Part No. 232A
                      -  -      -      -    | [continued after tearline] ...

_COLOR STANDARD_ question came up, and I find that Bally would make an
excellent color generator, as apparently their color output is very well
controlled.  I wonder if one of the TV-technical types can compare colors
with a standard color generator output and tell us which color numbers
give you the standard shades necessary for color TV work.

_BANGMAN_ game program included this month is by Ernie Sams, 248 S. Forest
Street, Bellingham WA 98225.  It has a novel twist over the old hangman game
and is quite clever.  It has a good scheme for entering characters without
their appearing on the screen, and a search routine that can locate and
account for multi-usage of a letter.  I am also including Ernie's sheet of
documentation that will be of help to a lot of us.

-------------------------------------------------------------------------------
Page 48 - [BANGMAN listing - sideways, didn't scan properly]

-------------------------------- arcadian -------------------------------------
Page 49 -

BANGMAN DOCUMENTATION:

  10 -  200  Initialize and instructions.
 300 -  700  Ask for and accept up to ten valid letters.
        600  Stores the word in two locations:
               1. To keep track of the letters correctly guessed.
               2. To print the word if not guessed in nine tries.
 800 - 1010  Set up blanks for the word.
       1200  Store each letter of the alphabet for future use so the
             same letter is not used twice.
       1300  Initiate guessing loop.  Allows 26 guesses.
1430 - 1450  Allows one to guess a letter by turning knob #1.
       1540  If storage position is set to -1 the letter has been used.
       1550  Sets value of storage position to -l and prints letter at
             the bottom of the screen.
1600 - 1900  Loop through the storage positions in 600 (1).  If a match is
       1800  found print the letter in the appropriate location(s) on the
             blanks established in 800-1010 and change the storage position
             value to -1.  Set flag "Q" to 1.
       2000  If the flag "Q" is not equal to 1 then the chosen letter
             did not match a letter in the word so go to subroutine 9600
             plus counter E times 10 and print that portion of the man.
             Increment the E counter.  If there have been nine wrong
             guesses default to 9000 to "bang" part of bangman.
       2050  Otherwise flag "Q" equals 0.
2100 - 2200  Loop through storage positions in 600 (1).  If all positions
             are -1 then the word has been guessed.  Print "congratulations"
             and press go to start a new game.
9000 - 9020  The word was not guessed within the nine wrong guesses allowed.
             The man was completely built, so - -
9030 - 9040  Print out the word (from 600 (2)) on the blanks.
9060 - 9160  Draw a gun with the word COLT on it.
       9200  Change the screen to a border format.
9225 - 9340  Put six random shots in the body of the man.  Use sound
             effects.  9230-9240 is the shot.  9260 is the ricochet.
       9350  Blank out screen
9360 - 9370  Blank out man
       9400  Uncover screen from top to bottom with man gone.
       9410  Restore screen to full screen format.
       9500  Press go to start a new game.
SUBROUTINES
       9600  Prints head, eyes, mouth.
       9610  Prints neck.
       9620  Prints body.
       9630  Prints right arm.
       9640  Prints left arm.
       9650  Prints right leg.
       9660  Prints left leg.
       9670  Prints right foot.
       9680  Prints left foot.


_RANDOM ART_ has been expanded with some added sound and shape enhancements
by Dave Stocker.  Add the following to last month's program:
       15 &(0)=7; &(1)=7; &(9)=84; NT=0: &(21)=14; &(22)=255
       85 B=FC+RND(31)x8+4; &(2)=B; &(3)=B
      125 &(19)=X;  &(18)=Y
      135 IF &(23)=1 RUN
          Press GO to set new parameters.     (try 5,13)

-------------------------------- arcadian -------------------------------------
Page 50 -

_TUTORIALS_ by Steve Walters (556 Langfield, Northville, ME 48167) and Dave
Iback (19553 Dartmouth) follow.  The first provides some very interesting basic
data on character size and how to make them appear exactly where you want them.
The second provides additional comments on the IF-type statements discussed on
pg. 41.

_CHARACTER SIZE AND PRINT LOCATION_
Every character is 5 pixels wide, with a one-pixel space added to the right of
the character to provide a one-pixel separation between characters.  Thus, the
effective width of a character is 6 pixels.

Every character is 7 pixels high, with a one-pixel space added beneath it to
provide a one-pixel separation between lines of print.  Thus, the effective
height of a character is 8 pixels.

The cursor is displayed as a 6-pixel wide by 8-pixel high box, the effective
size of a character.  When a program is running, the cursor is not visible.
When a program ends, the cursor is displayed wherever it happens to be,
preceded by the line entry indicator > .

If a PRINT command is not ended with a comma, the computer will leave a
full space (6 pixels by 8 pixels) following the last character in the PRINT
statement, and shift to the next print line.  This end-of-statement space will
appear as a white box against a black background, and will blank out anything
located beneath it.

If a PRINT command is ended with a comma, no space is added beyond the one-
pixel space to the right of the last character, and the cursor remains at that
location until another PRINT command is given.

A character prints centered on its CY location, but not centered on its CX
location.  Given CX and CY as the print location of a character, the horizontal
center of the character is CX-1 and the vertical center of the character is CY.
The left edge of the character is located on CX-3 and the right edge of the
character is located on CX+1.  The top and bottom of the character are located
on CY+3 and CY-3, respectively.

Since the left edge of the screen display area is on CX=-80, and the left edge
of a character is on CX-3, a character will print at CX=-77 even if the program
specifies CX=-78, -79 or -80 prior to the PRINT command.  However, this
behavior is not duplicated at the right side of the screen.  If CX is specified
at +78, the right edge of the character will be on CX=+79 (CX+1, and the right
limit of the screen display area); but if CX is specified at +79, the character
will print beyond the CX=+79 limit.  The cursor will shift lines in the
process, and if a comma follows the PRINT command, the cursor will shift to
CX=-77 on the same CY line.

_SCREEN DISPLAY AREA RELATED TO CHARACTER SIZE_ The edge limits of the screen
display area (CX-80 to +79; CY=43 to -44) are functionally related to the
character print size.  The normal top line of print (without a CY value being
specified) is CY=40, and thus the top of the characters on that line are at
CY=43.  There are 11 normal print lines, located at CY=40, 32, 24, l6, 8, 0,
-8, -16, -24, -32 and -40.  The bottom line (CY=-4O) results in the bottom of
the characters on that line being at CY=-43 and the one-pixel space below them
being at CY=-44.

-------------------------------- arcadian -------------------------------------
Page 51 -  [rest of article and example - sideways, didn't scan properly]

-------------------------------- arcadian -------------------------------------
Page 52 -

_TUTORIAL_ 2 is a follow-up on last issue's comments on IF statements, again by
Dave and Steve.
     The Bally BASIC interprets IF statements in terms of Boolean algebra
concepts.  In simple terms, each condition in an IF statement is assigned a
value of one (+1) if it is true (i.e., if it is met) or a value of zero (0)
if it is false (not met).

The program then executes the IF statement if the resulting Boolean value of
the IF statement is greater than zero, or proceeds to the next program line if
the value is zero.

Each condition in an IF statement must be placed in parentheses if there are
two or more conditions; but it is optional if there is only one condition.
Thus, simple IF statements may be programmed in either of two ways:
               1000 IF A=4 GOTO 2000                  (uses 12 bytes)
               1000 IF (A=4) GOTO 2000                (uses 14 bytes)

               (if A=4, a value of 1 is given to the IF statement and the
                program branches to 2000)

               1000 IF A=4 IF B=5 GOTO 2000           (uses 16 bytes)
               1000 IF (A=4)+(B=5)=2 GOTO 2000        (uses 22 bytes)

               (if A=b, a value of 1 is given to the IF statement, and if B=5,
                a value of 1 is also given, so that if both conditions are true
                the resulting value is 2 and the program branches to 2000;
                if only one of the two, or neither, is true, the program does
                not branch)

Obviously, in both of the above cases, using the parentheses costs more in
memory bytes and is thus not efficient.  However, in more complicated IF
statement conditions, parentheses result in less memory bytes being used;
and in some cases the saving is substantial.

For example, consider a condition where A=4 or B=5 or both (ie.A=4 and/or B=5):
               1000 IF A=4 GOTO 2000
               1010 IF B=5 GOTO 2000                   (uses 24 bytes)

               1000 IF (A=4)+(B=5) GOTO 2000           (uses 20 bytes)

Even more memory savings would be involved if the condition was any one or more
of _three_ variable values.

The following list illustrates other applications of special IF statements in
the most byte-efficient form, based on the above principals:

-------------------------------- arcadian -------------------------------------
Page 53 -

Special IF statements:
     If A=1 and/or B=2      1000 IF (A=1) + (B=2) GOTO 2000
     If A=1 and B=2         1000 IF A=1 IF B=2 GOTO 2000
     If A=1 or B=2 but not both      1000 IF (A=1) - (B=2) GOTO 2000
     If A [not equal] 0 (i.e., if ABS (A) [.ne.] 0)  1000 IF A GOTO 2000
          This is also useful for hand control responses:
          1000 IF TR(1) GOTO 2000    will branch if trigger is pulled
          1000 IF JX(1) GOTO 2000    will branch if Joystick moved sideways
          1000 IF JY(1) GOTO 2000    will branch if joystick moved back & forth
     If neither A not B equal zero   1000 IF A IF B GOTO 2000
     If A=1 and B=2 and C=3          1000 IF A=1 IF B=2 IF C=3 GOTO 2000
     If A=1 and/or B=2 and/or C=3    1000 IF (A=1) + (B=2) + (C=3) GOTO 2000
     If A=1 or B=2 or C=3 but not more
       than one of these             1000 IF(A=1) + (B=2) + (C=3) =1 GOTO 2000
     If any two of the above three
       conditions are to be met      1000 IF(A=1) + (B=2) + (C=3) =2 GOTO 2000

_TUTORIAL_ 3 is another follow-up, this time by Jean Taillefer.
     The >= and <= symbols will work in an IF statement.  They stand for
                      "equal to or greater than" and "less than or equal to",
respectively.  The symbols are sometimes shown as [.ge.] or [.le.].
     The statement IF A>=B GOTO 100 is equivalent to
                  IF A>B GOTO 100;IF A=B GOTO 100   _or_
                  IF(A>B) + (A=B) GOTO 100

     A statement that is equivalent to the "reverse sign" function on a calcu-
  lator can be accomplished with the following:   -(A)
  If A is positive, the statement is evaluated as -(+A), for a negative number.
  If A is negative, the statement is evaluated as -(-A), for a positive number.
     This statement can be used with a variety of other statements, such as:
                      PRINT -(A)
                      B-(A)
                      IF -(A) = 1 GOTO 100
  This is different from the ABS command which always gives a positive number.

_DEALER_ in the St. Louis area is RTS Electronics/Gametronics, 356 Brookes Dr.
731-2309 who report that they have all cartridges in stock, do mail order, and
hold Football tournaments for players on Tuesdays,6-9pm and Saturdays, noon to
four.  They mention that players are bringing their own hand controllers, which
makes me think of the slot car operators...

_DEALER_ in Indiana is ABC Hobbycraft 2155 E.Morgan Ave, Evansville 47711
(477-9661) who are open Sundays, and who act as the local hangout for Bally
enthusiasts.

_GAMES_ 2007 PINBALL and 2006 SPACE INVADERS are scheduled for July release.
There were a few words on these on pg. 23.

_STATEMENT_ When I started this paper late last year, I indicated in my
subscription form that I would print material as it became available, but at
least bi-monthly in this fiscal year.  Well, I have been doing better than
bi-monthly because material has been coming in at a much higher rate than I
expected, so I have been publishing more or less monthly.  This is a hobby
output so publication is bound to be somewhat haphazard.  Post-printing
operations are starting to get unwieldy and I may have to get professional
help in the folding/stapling area.  Right now it looks like there will be at
least 2 more issues to November, so you'll be getting at least a 50% 'profit'.

--------------------------------------------------------------------------------
Page 54 -

_ADS_
   Sell: Bally ARCADE with 4 hand controls,280ZZZAP,Baseball,T1ny BASIC.  First
certified check for $260. R. Dembody, 8431 Timber Glen, San Antonio, TX 78250
   A fantasy game package is available for those who enjoy the Dragon/Dungeon
type of operation. G. McLimore, 121O E.Virginia St. Evansville IN #7711.
Games are MULTIDIE(dice roller),DUNGEON GRAFIX I,DUNGEON GRAFIX II, and FANTASY
PEOPLE for advanced players.  $6 on your C-30,or $8 on his.  No listings.
   BOWLING, No. of pins hit and score shown $5on your tape or $6 on his.
Add $2 and either HANGMAN or CHECKERS will be put on other side.  Listing for
half price.  John Collins, 713 Bradford Dr. Ft. Walton Beach, FL 32548.
   Bob Weber is part of W&W Software Sales, 6594 Swartout Rd. Algonac, MI 48001
and has reorganized their software.  They now have 4 cassettes with 5 programs
each for $10 each in a preprogrammed form. Send for complete list/descriptions.

_PROGRAMMABLE KEYBOARD_ The latest delay hinges on a Texas Instruments petition
now before the FCC.  They have asked for a change in the procedures by which
computer/parts are approved for use.  Apparently RCA tried this two years ago
but never pushed very hard.  The current procedure is for a computer
manufacturer to have his whole system approved as meeting RFI, TVI, etc.,
limits, while the proposal is to have only the RF modulator inspected/approved.
This has thrown the manufacturers into a tizzy as they feel that if the rules
or standards are changed in the middle of the stream they'll have design and
manufacturing costs to contend with.  Bally, who haven't gone into production
yet, feels they have to wait and see which way the FCC goes to avoid the 50-50
chance of being in error when the decision is made.  For a company that thrives
on gambling, those are unacceptable odds.  Here is an excerpt from
_Consumer Electronics monthly_ 5/79 pg. 31:
       Doubt about future standards for personal computers will delay product
     introductions as well as halt production of units introduced, but not yet
     in production.  Bally, for one, will hold off manufacturing its upgraded
     game/computer introduced at Winter CES until a decision is reached.
       "We have two units to go with," says national sales manager, Jack
     Nieman, "the one we showed at CES for around $650 and a lower-priced unit
     for around $350.  But it could cost us millions of dollars if we make a
     decision on which unit to go with before the FCC makes a decision."     []

My discussions with Bally indicate that they expect a corporate
discussion/decision around January, with delivery months later than that.
Needless to say, the whole situation is disappointing and frustrating.
Fortunately, we have some people working on ways to 'make our own', and
we can see a little glimmer of light, as reported earlier this issue.
Subscribers who are working on a keyboard, memory addition, or any other
"goodie" are urged to write me so that I can build up a team to get the
needed hardware built and available for us all.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, stapler [another new title]
3626 Morrie Dr.
San Jos, CA 95127 [e acute accented]

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 08] =========================
Page 55 - [at bottom.]

VOLUME ONE                      July 20, 1979                  Number 8

_PROGRAMMABLE KEYBOARD_ is still up in the air with nothing new to report in
that area.  I have received some positive responses to my query on projects
in work, having to do with adding a keyboard and with adding memory - if there
are any more workers out there, please let me know.  I am now thinking that it
would probably be a good idea to consider a backup plan in case the Bally
output is delayed even more.  This plan would provide us with a full size
keyboard and added memory, but without the GRAFIX or ZGRASS features.  This
would come about by the concentrated effort of a number of subscribers who
currently are working independently on either a keyboard or memory addition.
With a common goal in mind, coordination of effort among the individuals, and
probably a deadline (Jan 80), we should be able to progress faster than we
are now.  One important question is cost, and I am going to ask for a show of
hands on the following which will enable us to determine the amount of memory
capability that can be incorporated plus other 'goodies'
   1. Assume that the Bally Keyboard is available with full capacity
      (ref. pg. 21 ).  Are you ready to pay $650. for it?
   2. Assume that the Bally Keyboard is available with partial capacity
      (ref. pg. 54).  Are you ready to pay $350. for it?
   3. Assume that we develop a keyboard that would have 16K RAM with
      upgrading capability to 24+ RAM, and some form of resident BASIC in
      16K ROM, along with some features as cassette motor control, word
      processing capability, etc.,  Are you ready to pay $350. for it?
      (Assuming that Bally does not produce in the same time frame.)
A postal card with numbers down the side and yes/no opposite each is all
that is necessary, but suggestions are certainly welcome.  Also, tell me
Model Number and Serial Number of your machine if you haven't done so yet.

_INPUT DOUBLING_ has been reported by Kirk Gregg.  He notes that you can
include as many as 35 variables in an INPUT statement, separated by commas.
That way you can INPUT A,B,O,U, @(9),@(6),etc., saving a few bytes,

_DIRECT OPERATION_ of equipment is one of my pet goals for this machine.
Some time back Mitt Nodacker sent me a scheme for detecting a specific tone
output of the tone generator using a phase lock loop (PLL) decoder.
This device listens for a tone of specific frequency and creates an output
when the tone is detected.  The output can then drive another device.  The
circuits are covered in such documents as: FM AND REPEATERS, by ARRL, pg. 120;
INTEGRATED CIRCUIT PROJECTS Vol 3 by Radio Shack, pg. 57; or INTEGRATED CIRCUIT
PROJECTS by Sams, ch.3., all using the NE567 PLL device and a few resistors/
capacitors.  I tried the circuit without any success, but a letter from
Rich DeLong and Dan Zielinski stated that a frequency counter is most useful,
so maybe I was just out of adjustment.  But along with their letter came a
similar circuit with a two-step amplifier and relay with which they have had
success.  I'll work on this and give you a report next time.

_TRUTH_ of a statement can be directly displayed by the use of the PRINT
command, reports Marc Gladstein.  This is an adjunct to the IF discussions
of pp. 52 + 53, where the machine decides if a statement is true (1) or
false (0).  The answer can be displayed, if you are interested, as follows:
            PRINT 1 = 2              display 0
            PRINT 3 = 3              display 1
            PRINT 1 [.ne.] 2         display 1
            PRINT 5 > 6              display 0

-------------------------------- arcadian -------------------------------------
Page 56 -

_TUTORIAL #1_. Some material for the beginner in programing and computer usage.

First off, the machine is ignorant, totally ignorant with no imagination.
It works only when you tell it to, and it only does what you tell it to do.
It will do nothing by itself, or arbitrarily.
Everything that you tell it to do must be done in a step-by-step fashion.
There are a couple of short-cuts available, but in general you must state
everything that must be done and in the order in which it must be done.
As an example of the machine's 'dumbness', it won't do anything if you key in a
command on the keypad.  All that happens is that the screen will show the keys
that were pressed.  The information is stored in a space called a "buffer", and
you have the opportunity to look over the entry and make corrections if needed.
When you are happy with it, press GO, which moves the entry from the buffer
into the machines memory and/or executes it. (Execute meaning 'perform')
To create some sort of order, we generate a 'program' which is a total list
of orders to the machine to tell it what to do, plus the permanent data it
needs for the solution, and provisions for entering data of a variable sort.
To get to the program, one first starts with the step of 'naming the problem'.
Then one makes up a 'flow chart' to get the general sequence of operations,
and then finally the detailed program.  When the program is printed (either
on the screen or by hand, etc.,) it is 'listed', or you make a 'listing'.
Here is an example of the above in the addition of numbers, five in this case:

                  PROBLEM            ADD FIVE NUMBERS
                                        ---------------
                  FLOW CHART           | INPUT NUMBERS |
                                        ---------------
                                       | ADD NUMBERS |
                                        --------------
                                       | PRINT ANSWER |
                                        --------------
                 PROGRAM             INPUT A        GO
                                     INPUT B        GO
                                     INPUT C        GO
                                     INPUT D        GO
                                     INPUT E        GO
                                     F = A + B + C + D + E        GO
                                     PRINT F                      GO
(From now on, I won't print GO for every line entry, it should be a reflex.)

With the program shown above, the problem will work only once.  To keep the
program in the machine's memory, it is necessary to prefix each line with a
'line number'.  These are usually shown in increments of 10 , as follows:
           10 INPUT A
           20 INPUT B
           30 INPUT C
           40 INPUT D
           50 INPUT E
           60 F = A + B + C + D + E
           70 PRINT F

Now, to make it operate, you command RUN and then press GO which in this case
makes it execute.  The computer looks for the lowest line number, reads the
instruction there, and reacts.  When it has finished reacting, it looks for
the next line number, reacts, etc., etc.
You have probably noted that it does not make any difference in what order you
enter line numbers, the machine will automatically put them in numerical order,
a blessing.

-------------------------------- arcadian -------------------------------------
Page 57 -

In our example, line 10 says INPUT A so the internals of the machine,
constructed by the engineer, decide that the keypad will provide a numerical
value, and it will be identified as 'A' and placed in a memory slot, or
"register" entitled A.      It tells you this by printing the letter A on the
screen followed by the cursor, indicating that it is waiting for you to pump
in the first number.  When you do, and follow it with GO, the machine has then
completed its line 10 task and moves on to line 20.  And so forth.  At line 60
it sees that it has to set up a new register, F, and it must sequentially add
the contents of registers A through E together, and place them in F.  This job
completed, it looks at line 70 and sees that it has to print the contents of F,
which it does on the screen.

While the above is acceptable for a small number of input values, the program
length (and therefore memory) can be prohibitive if you had the 26 maximum
values you could enter (letter A - Z).  In such instances, the FOR-TO loop is
useful.  we can also take advantage of being able to modify a register.  The
program is:        10 A = 0
                   20 FOR B = 1 TO 5
                   30 INPUT C
                   40 A = A + C
                   50 NEXT B
                   60 PRINT A
(note that there are only 6 lines to the whole program.)
Analysis:
Line 10 is not really a part of the program, its intent is to make sure that
there is no 'left-over' from some other program residing in A when you start.
It is called "initialization".
Line 20 starts the FOR - T0 loop, and eventually needs line 50 to make the
loop work.  The machine reads that you will make 5 entries.  They will be
numbered 1, 2, 3, 4, 5.  It will not work if you have less than 5 entries
(you may have to enter zeros to make up 5), and it will not accept more than 5.
The numbering is arranged through a function called "STEP".  If you don't
define a value of STEP, the machine automatically picks "1".  So, the value
of B will start at 1 and automatically STEP by ones up to the value of 5.
Line 30 asks for inputs as before, but will always assign the input to
register C (and wipe out what was there before).
Line 40 operates on register A in the modification mode as was mentioned above.
What this says in English is that the New value in the A register is equal to
the Old value in the A register plus the value in the C register.
In the beginning of the program, the Old value in the A register is zero
(Line 10).  You now input C and in line 40 it calculates C + 0 so that now
the New value of A is numerically C.
Line 50 completes the FOR-TO loop instruction.  Now is the time for the value
of B to change per the STEP function.  The machine then goes on to line 30
again, and again, etc., until it runs out of B values, when it goes out of
the loop and on to line 60.
Line 60 tells it to print whatever is in register A on the screen.
Lets add up the following numbers: 5, 12, 13, 26, 6 in an extended example:
                   loop         loop         loop         loop
10   A=0         __>          __>          __>          __>          __>
20   B=1 (1<5)  / B=2 (2<5)  / B=3 (3<5)  / B=4 (4<5)  / B=5 (5=5)  / B=6 (6>5)
30  C inputs 5 / C inputs 12/ C inputs 13/ C inputs 26/ C inputs 6 /       /
40   5 = 0+5  /  17 = 5+12 /  30 = 17+13/  56 = 30+26/  62 = 56+6 /       /
50   B=2     /    B=3     /    B=4     /    B=5     /    B=6     /       \/
60      \___/        \___/        \___/        \___/        \___/  PRINT 62

-------------------------------- arcadian -------------------------------------
Page 58 -

While the FOR-TO loop saves space, it does so at the expense of loseing the
identities of the inputted numbers.  With the longer system, you could always
call up a value, for example: PRINT D and the fourth value would show up.
So each has its usage.
Suppose we want to make a small addition to the program, adding one line
         25 PRINT B
Note that since we have used line numbers with an interval of 10, it is easy
to slip the addition into the program.  The keypad simplifies the 10 interval
by having the +10 on the GO key - when you have finished a line, press
WORDS +10GO and there it is.

_BANGMAN_ change was suggested by Rory Wohl as line 2000 was giving him some
fits:     2000 E=E+1 IF E=9 GOTO 9000; IF Q [.ne.] 1 GOSUB 9600 + (Ex10)
[penciled in note: Do not use this Bangman fix, see page 78 for explanation.]

_aMAZEd in SPACE_ game included in this issue is a rocketship-thru-the-maze
challenge with a number of levels of difficulty.  One problem is that I've lost
the name of the originator.  I sent the material to Dick Hauser who made a few
modifications and prepared the descriptive material.  Note how he has separated
the listing into blocks that correspond with the flow chart.  The program lines
marked C are just for information and do not go into the machine.

_PROGRAMMING SHEETS_ that I use in these issues are available from Chuck Thomka
1228 W 222 St. Torrance, CA 90502 at 20 for $1, add'l sheets at .05 each.  He
also has the GRAPHICS GRID per the sample shown, for those of you who need an
accurate layout of the screen for your graphic displays, same price.
     1    2    3    4    5    6    7    8    9   10   11   12   13   14   15
    -77  -71  -65  -59  -53  -47  -41  -35  -29  -23  -17  -11  -5    1    7
   +----+----+----+----+----+----+----+----+----+----+----+----+----+----+--->
 1 |++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++
40 |++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++
   +----+----+----+----+----+----+----+----+----+----+----+----+----+----+--->
 2 |++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++|++++| ...

_SPECIAL EFFECTS_ that you may come up with, either visual or aural, are
requested.  These would be short programs that give you a 'shot' sound, or
a 'starburst', or similar enhancement that could be used in a game, etc.
I would also keep these in a separate document, and probably make it
available later, with an index.

_TELEPHONE DATA COUPLER_ article in KILOBAUD, June '79 has been tried by
B. Reany and found to be a workable unit.  It uses a Radio Shack 43-230
telephone amplifier and a few parts

_COLOR_ values requested in the last issue brought forth the following
response from Don Wurst.  "I used a Tektronix 520A vectorscope with a
standard TV to be as close as possible to the demodulator and found
the following BC's to be as close as possible to the standards."

         Luminance value Y        Color          BC
         -----------------       ------          --
            100                 White             7
             89                 Yellow        126 or 134
             70                 Cyan          205 or 221
             59                 Green            172
             41                Magenta            43
             30                  Red           82 or 90
             11                 Blue             249
              0                 Black              0

-------------------------------------------------------------------------------
Page 59 - [SLOT MACHINE listing - sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 60 - [AMAZED IN SPACE - sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 61 - [CRASH listing and flowchart - sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 62 - [already OCR'ed by Adam Trionfo]

_TUTORIAL_ 2. - The Music Synthesizer [Part 1], by Chuck Thomka

     The synthesizer circuit, which is contained wholly within the 40 pin
custom I/O chip, is a very versatile circuit which contains counters and
amplifiers to give the programmer tremendous control of the three voice output
along with a tremolo, vibrato, and even a noise generator.  The output
frequency range is very accurately adjustable from less than 14 hertz to
ultrasonic frequencies.  The upper limit may be set by the capacity of your TV
sound system.

     Toward the end of this article I'll give you some examples of figuring out
an accurate oscillating frequency, and two programs.  One to play the entire
synthesizer via the &(16) through &(23) registers, and the other to simulate
the Bell Telephone Touch Tone sound.  By holding a telephone mouthpiece at the
TV speaker, you can dial a telephone number.  Refer to the logical diagram
included to fix in your mind just what is happening.

     The operation goes like this.  The clock triggers the Master Counter which
counts, starting from zero, the pulses up to the number set into the &(16)
register.  When the Master Counter reaches that number, it puts out a pulse and
then the counter will either reset to zero or preset to the number from the
&(20) or &(23) register (these will be explained later) and then starts the
count up all over again.

     The pulse coming from the Master Counter goes to the inputs of the
identical A, B, and C Counters.  While all three counters are identical, the
number that each counts up to is individually adjustable by using the &(17),
&(18), and &(19) registers.

     Each of these counters, upon reaching its count number, will "toggle" its
output.  Toggle means to change its output once; if it was low, it will go high
and if it was high it will go low.  Since the counter has reached its assigned
count level, it will reset to zero at the next pulse from the Master Counter
and start counting up again so that it can once again toggle.

     Each of the outputs of the A,B, and C Counters goes to its own amplifier.
That amplifier is the volume control of that counter (or voice) and it has 16
levels of output.  While the lowest level isn't absolutely zero, it is almost
inaudibly low.  The &(22) register controls Volume A (the four least
significant bits (=LSB)) and Volume B (the four most significant bits (=MSB))
while half of register &(21) (the four LSB) controls Volume C.

     There is one more amplifier.  The is the Noise Volume.  But it must be
'enabled,' to work (that is, turned on).  Only one bit is the enable, bit 32 of
the &(21) register.  This bit must be high for the Noise Generator to be heard
at the volume setting of the &(23) register (the four MSB).

     &(20) is the Vibrato control register.  What it will do to the final audio
output is make the sound shift from one frequency to another frequency at a set
rate (1 of 4).  This makes it very useful for sound effects.  How it does this
is by not allowing the Master Counter to reset to zero once the Master Counter
has reached the &(16) value.  Instead, at that time, on the following clock the
Master Counter will preset to the value set into the 6 LSB's of the &(20)
register.  This means instead of the next count cycle of the Master Counter
starting at zero, it will start at some number from 0 to 63.  This could
greatly reduce the time required for the Master Counter to reach its &(16)
value.  For example, if the &(16) is set to 14, which would normally take 15
clocks (0 to 14 is 15), and the 6 LSB's of the &(20) were set to 10, then this
would triple the normal output frequency.  This is because now the Master
Counter would only have to count from 10 to 14, a total of five clocks, or
three times faster than normal.

     I mentioned a rate selection of 1 out of 4 choices that the Vibrato will
'vibrate' at.  This is selected by the remaining 2 bits of the &(20) register,
the 2 MSB's.  The four combinations of these 2 bits are 00, 01, 10, and 11,
in increasing value.  These rates are (approximately) 18.5 milliseconds, 37
milliseconds, 74 milliseconds, and 148 milliseconds, respectively.  What
happens during this rate time is that for rate 00 the Master Counter will work
normally and be allowed to count up to its determined value and then reset to
zero for a period of 18.5 milliseconds; then, for the next 18.5 milliseconds
the counter will not reset to zero but instead preset to the value of the 6
LSB's in the &(20) register.  Of course, if that value is also zero (000000)
then there is no difference between reset and preset, hence no vibrato.  Each
of the other rate selections work in a similar manner except that the duration
of normal count time and preset count time will be longer, which is a slower
vibrato effect.

-------------------------------------------------------------------------------
Page 63 -

     My wording earlier was that this preset value could greatly reduce the
time required for the Master Counter to reach its &(16) value.  It is also
possible that the preset value could greatly increase the time, thus making the
vibrato shift in audio frequency go lower instead of higher.  This is possible
when the vibrato value (range 0 to 63) is set to a higher value than the number
in the &(16) register.  For example, in my previous example I had &(16) set to
14 (or 15 counts) and the 6 LSB's of &(20) set to 10, showing that the
resultant vibrato shift would be three times greater than normal.  Now in this
new example lets have &(16) still at 14 and put &(20) (the 6 LSB's) to 15.
During the time of vibrato preset operation, when the Master Counter finally
gets to 14, its determined value, at the next clock the counter will preset to
15.  The counter has no way of knowing that it is now at a count greater than
its determined value, it is still looking for the value 14, and 15 is not 14 -
so as the counter receives more clock pulses it will continue to count up.
And up to count 255 (binary 11111111) it continues.  The next clock will
overflow the counter to zero (no provisions for carryover are made) and still
continue - 1, 2, 3, etc.  And it finally reaches count 14 to output the Master
Counter Pulse.  The next clock repeats the reset to 15 and another long count,
"round the horn", to 14.  So how many clock pulses does this take?  Well,
counting 15 to 255 is 241, plus 0 to 14 is an additional 15 for a total of 256.
Instead of the normal reset time of 15 clocks, the preset time will take 256
clocks in this example, or over 17 times longer.  The longer time for the
output pulse from The Master Counter results in a much slower rate of toggling
of the A, B, and C counters, which results in a much lower output (voice)
frequency.

     A Tremolo would be a warble effect in the tone of a note.  This is
controlled by &(23), but it must first be enabled by &(21) bit 16.  This bit
acts like a switch.  When it is off, &(20) -the Vibrato Register- can be
engaged.  If &(21) bit 16 is on, the Vibrato will not work and the Tremolo
register is engaged.  The Tremolo and Vibrato cannot be engaged at the same
time, but as you become more familiar with the sounds out of the Sound
Synthesizer, and their ranges, you'll see it is not really necessary anyway.

     The operation of the Tremolo is similar to the Vibrato in that it also
presets the Master Counter to some number before it starts its count.  But,
whereas the Vibrato had a rate control (the period of which the counter would
alternately reset or preset), the Tremolo always presets.  The number to which
it is preset is randomly selected and only limited to a maximum number as set
into &(23).  All eight bits of &(23) are used for the Tremolo preset.  But
remember that the four highest bits are also used for the Noise Volume, in case
you try to use the Noise along with the Tremolo.  Also remember that the Noise
is switched in by &(21) bit 32.

     The preset of a number into the Master Counter, if it is less than the
&(16) determined value of the Master Counter, will shorten the time involved in
reaching that &(16) value.  The result will be an upward shift of the resultant
A, B, and/or C frequency or pitch, and the next preset will be another randomly
selected value (up to the maximum of &(23)).  The audible result of all this
will be a tremble or quivering effect.  If the &(23) value is greater than the
Master Oscillator's &(16), the resultant may be a random long count 'round the
horn' for the same reason that the Vibrato could have a long count.  The
audible effect will be a wildly varying Tremolo sound.  One last remark about
the Tremolo is that if &(23) is set to zero, there will be no Tremolo effect at
all since a random preset of up to zero can only be zero, and that is the same
as a reset of the Master Counter.

     Now lets get into how to figure out a simple set of frequencies.  First,
the key to the whole thing is to know what the main clock frequency is.  I am
using a frequency of 1,777,940 hertz for all my figures, measured on pins 16
and 20 of the I/O chip after some warm-up.  The reciprocal of this frequency is
0.562448 microseconds.  This is the unit of time that the Master Counter
counts.  This should be 1/8 of the crystal oscillator frequency (supposed to be
14,318,180 hertz) but the error in my unit is -.0018%, a quite acceptable
figure.
     For some practice, here are some parameters:

          &(16) = 60     Master Counter
          &(17) = 99     Counter A
          &(18) = 74     Counter B
          &(19) = 49     Counter C

-------------------------------------------------------------------------------
Page 64 -

     Forgetting for the moment the Vibrato, Tremolo, Noise and Volume controls,
I want to show you what the resultant A, B, and C voices would be.  First
remember that all of these counters start at count zero, which is one less than
you or I count on our fingers.  Second, since the period of total time it takes
for the A, B, or C counter to toggle is only one change of state, it will take
yet another toggle to equal one cycle of some resultant frequency.  This is why
you will find a 2 in the figures below.

     Use this formula: (Substitute counter B or C when calculating those
frequencies)
                                             1
          Freq. A = ----------------------------------------------------
                    (Master Counter+1) x (Counter A + 1) x Time Unit x 2
This converts to:
                                    1
          Freq. A = -------------------------------   = 145.7 hertz
                    61 x 100 x 0.562448 x 10^-6 x 2

                                    1
          Freq. B = -------------------------------   = 194.3 hertz
                    61 x 75 x 0.562448 x 10^-6 x 2

                                    1
          Freq. C = -------------------------------   = 291.4 hertz
                    61 x 50 x 0.562448 x 10^-6 x 2

     So there are three different frequencies, all available at one time, by
simply turning on the A,B, and C volumes.  Notice that while Counter A + 1 is
twice the value of Counter C + 1, the resultant frequencies have Freq. C twice
the value of Freq. A.  This is because Counter A has to count twice as many
Master Pulses, before toggling, as Counter C does.

     Now all that is useful if you are trying to find the resultant frequency
for some known values, but we usually want to go the other may.  As an example,
we will see the steps to find the values needed to generate the Bell System
Touch Tones, the number "0".  Bell Systems require two frequencies outputted
whenever one key is pushed on their regular pad.  When pushing "0" the two
frequencies are supposed to be 1336 and 941 hertz, with an acceptable tolerance
of +/- 5 hertz.  Calculate Freq. A values for 1336 hertz and Freq. B values for
941 hertz:

Step 1 - Find the reciprocal of the frequency.

Step 2 - Divide the reciprocal by the Time Period.

Step 3 - Divide by 2, and use the nearest whole number.  This answer is the
         total number of time periods that must be counted before having an
         output toggle for the frequency's half cycle.

For Freq. A:
1 divided by 1336 divided by 0.562448 x 10^-6 divided by 2 = 665.39 = 665

For Freq. B:
1 divided by  941 divided by 0.562448 x 10^-6 divided by 2 = 944.7  = 945

     The values of 665 and 945 are the total number of clock periods as
mentioned above.  But recall that the Master Counter must count some of those
clocks, and it sends a pulse to both A and B Counters, so it must count a
number of clocks which have a common denominator to 665 and 945.  For ease, I
have set the Master Counter to count 5 clock periods before sending out that
pulse, so &(16) = 4 (0,1,2,3,4 = 5).  Now that means Counter A must be set to
665/5=133, therefore &(17)=132.  And Counter B must be set at 945/5=189,
therefore &(18)=188.

     If you run these results back through the first formulas, you will find
that Freq A = 1336.8 hertz and Freq B= 940.7 hertz, well within the tolerance
band.

     To have both voices come from the TV speaker at the same time only
requires that Volume A and Volume B be brought up to sufficient numbers.  Both
would be maximum if &(22) is set to 255.

     I have found two exceptions that may be unique to my own computer... One,
when &(16) is set to 0, it recognizes it as 2; and the other is when &(16) is
set to 1, it recognizes it as 3.  I can't explain why, it may have to do with
the high speed at which you are trying to make the Master Counter work.

     Load the "SOUND GRAPH" program and get some 'hands on' experience, and try
out different ideas.  Also, there is an optional modification to the program
that will display all eight binary bits of the value that the knob is adjusted
to at that time.  It does slow down the program, but it is a good teaching aid.

[Edited and proofread - AJT, 2/18/2011] [Part 2 in Vol. 1 Issue 9, pp. 71, 72]

-------------------------------------------------------------------------------
Page 65 - [SOUND GRAPH and TOUCH TONE SIMULATE listings - didn't scan]

-------------------------------------------------------------------------------
Page 66 - [SOUND SYNTHESIZER block diagram - sideways, didn't scan properly]

-------------------------------------------------------------------------------
Page 67 - [MEMORY DISPLAY and SQUARE ROOTS listings - sideways]

-------------------------------------------------------------------------------
Page 68 -

_ADS_
   * Bally Basic cartridge, manual, interface package, SEAWOLF/MISSILE,
     BRICKYARD/CLOWNS for $80.  M. Jones, 11106 Polaris, San Diego, CA 92126
     714-566-8087
   * CHESS for two players $6 on my tape or $5 on yours.  Add $2 for CHECKERS
     or HANGMAN on reverse. J.Collins 713 Bradford Dr. Ft.Walton Beach FL 32548
   * Program listings available from Ron Schwenk, 6988 Lincoln Creek Circle,
     Carmichael, CA 95608 - Mastermind/Batnum at .20 each, Craps at .10,
     Legal stamped envelope, please
   * SEA BATTLE @ $4.00 /HORSERACE, STARSHIP, ROBOT WAR  $3.00 each
     /STAR WARS, SLOT MACHINE, STARTREK, CRAPS 2, CONNECT 4  $2.00 each
     /TICTACTOE @ $1.00  Above on your tape, 4 min per program, half price
     for listing alone.  All ten for $22.  All except Connect 4 have graphics.
     Scott Waldinger, 24740 Woodcroft Dr., Dearborn, MI 48124
_BOOKS_ that have been recommended by subscribers are: A GUIDED TOUR OF
     COMPUTER PROGRAMMING IN BASIC by Dwyer and Kaufman, and 57 PRACTICAL
     PROGRAMS & GAMES IN BASIC by Tracton.  I have received a couple of
     programs that were modified from the latter.
_SERVICES AVAILABLE_ from Tim Hays, 456 Granite Ave, Monrovia, CA 91016
     include: piano-like 3-octave keyboard; hard wired TBASIC chip into
     motherboard with switch; Sound output; special application software,
     games, music, sound effects, also sales of Bally hardware. Send for
     details 213-359-8092
_VARIETY_ is offered by W&W Software Sales, 6594 Swartout Rd. Algonac MI 48001.
     Five pre-programmed tapes with 5 programs each at $10 each tape.
     Guaranteed bug-free.  Include boards for games, colors, skill levels,
     business programs.  Send S.A.E.

_THIS ISSUE_ is pretty well packed with stuff, primarily your contributions
     of one kind or another.  I have received a lot of compliments on the
     paper, but I am only relaying the material that comes in to me, so
     the compliments really go right back out to you, the subscribers.
     On the other hand, "keep those cards and letters comin' ", so that
     we can all benefit in this endeavor.

_REWORKED GAMES_ mentioned above also have been taken from 24 TESTED,
     READY-TO-RUN GAME PROGRAMS IN BASIC by Tracton (The Tracton books
     are distributed by TAB books) and from BASIC COMPUTER GAMES by Ahl,
     editor of Creative Computing magazine.  A recommended book is THE
     BASIC COOKBOOK by Tracton, a dictionary type of book.  These have
     been reported by Bob Kelley.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, folder [another new title]
3626 Morrie Dr.
San Jos, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 09] =========================
Page 69 - [at bottom.]

VOLUME I                       August 18, 1979                 Number 9

_PROGRAMMABLE KEYBOARD STATUS_ A meeting of the FCC is scheduled around
Sept. 15, at which time the TI petition will be discussed.  Bally currently
feels that regardless of the decision, they will not be able to have a
keyboard in production by the end of the year.

_SURVEY_ The subscriber survey has resulted in a fair turnout of responses
from those interested in a keyboard/memory addition, and a number of useful
suggestions as well.  What is evolving now is a unit that could have 16K of
RAM that would accept a cassette input of the operating program, be it BASIC,
COBOL, FORTRAN, or whatever (your choice) which would be loaded in about
two minutes at 1200- baud (while the picture tube was warming up), plus an
additional 8 or 16 K of onboard RAM for the user's programs.  There would be
space to add more RAM by chip insertion (especially the 8K version), plus
connectors to allow outside memory addition.  Serial and parallel ports
would be available for the addition of other peripherals.  Those who
responded to the survey will be kept up to date.

_BLACK BOX_ enclosed is a sort of Battleship game where the computer hides
some "atoms" in a grid and you have to locate them.  Use the diagram for clues.

_TUTORIAL ON SOUND_ adds more material from Chuck Thomka to last issue's
discourse.

_SLOT MACHINE CORRECTION_ requires the addition of a comma to the very end of
line 1515 to stop the scrolling.

_BIG LETTERS_ continue to interest subscribers.  Dennis Sprague modified the
pg. 45 program to write double size letters on command - the poke-ing is done
automatically.  Refer to the program on pg. 45 and retain lines 9 thru 60, and
line 120.  Replace the rest with:
                             65 A = 20190
                             70 K = KP
                             80 IF K = 13 GOTO 100
                             90 %(A) = K; A = A+1; GOTO 70
                            100 %(A) = 0
                            105 CLEAR
                            110 CALL (B); GOTO 65
Dennis writes "65 starts the display area, 100 shuts off the display if a zero
is encountered.  The ASCII values of K get poked into the display area 8 bits
at a time."

With the above, enter and RUN the program.  Then just key in whatever letter,
number, character that you wish to see, punch GO, and there it is, twice as
big as life.

_AMERICAN CONCERT FREQUENCIES_ chart has been prepared by Robert Hood, along
with the closest Bally frequency: (all in Hertz)
    Note     Standard     Bally               Note     Standard     Bally
     C        261 .7       262                 G        392          392
     C#       277.3        277                 G#       415.2        415
     D        293.7        294                 A        440          440
     Eb       311.1        311                 Bb       466.1        466
     E        329.7        330                 B        493.9        494
     F        349.2        349                 C        523.3        524
     F#       370.1        370

In addition, Bob has furnished a program based on the equations of pg. 64 to
solve for frequencies or tone register values, and this is found on pg. 70.

-------------------------------- arcadian -------------------------------------
Page 70 -

BANGMAN CORRECTION COMMENT by Ernie Sams indicates that perhaps Rory Wahl has
a defective logic chip if Rory's correction in the last issue is needed to
make the program work. Ernie writes:
"Rory suggests that the line should read:
      2000 E=E+1; IF E=9 GOTO 9000; IF Q[not equal to]1 GOSUB 9600+(Ex10)
Q is a flag that is set to either 0 or 1.  If it is set to 0 it sends the
program to the man drawing routine at 9600, 9610, 9620, etc.
E is a counter that is to be incremented ONLY if the guess is wrong.  It is NOT
to be incremented if the guess is correct or if the letter has been previously
used.  So the portion of the program line, E=E+1, must follow the IF statement.
Now, if the 'IF' portion of the IF E=9 GOTO 9000 statement is not satisfied
the program defaults to the next numbered program line.  The way Rory proposes,
E would be incremented each time a guess is made, right or wrong.  The program
would never reach the man drawing routine statement because it can't go past
the first IF statement until E=9 at which time the program goes to 9000, draws
the gun and shoots the man that never gets drawn on the screen.
So line 2000 MUST remain exactly as was originally written or the program will
not work as intended:
     2000 IF Q[not equal to]1 GOSUB 9600+(Ex10); E=E+1; IF E=9 GOTO 9000

I have included all of Ernie's discourse as I felt that it would be of interest
as a tutorial in why things are done in a certain way.

BOB HOOD's program to convert frequencies to register values and vica versa:

[FREQUENCIES Converter program listing by Bob Hood - did not scan]

-------------------------------- arcadian -------------------------------------
Page 71 -

_TUTORIAL - SOUND SYNTHESIZER, Part 2_ by chuck Thomka [OCR'ed by Adam Trionfo]

     Whenever RESET is pushed, the &(16) to &(23) registers are set to fixed
values. (This sort of thing is called DEFAULT)  This also happens at POWER TURN
ON.  &(16) is set to 71, and &(17) through &(23) are set to zero.

     Since pushing most keys on the keypad will generate a sound, one of the
voices must be used.  This means that since most keys have unique tones when
pushed, they must be loading unique values into one or more of the registers.
The voice used is the 'A' counter.  Each key, when pushed, puts a value into
the &(17) register that the 'A' counter will count up to.  It will also put
value 15 into the &(22) register, that will adjust the 'A' volume to its
maximum so that the resultant frequency can be heard.  At the end of the time
of outputting the tone, the &(17) and &(22) are both put back to zero.

     At anytime that the computer is stopped, the &(16) register will be set to
71, and &(17) and &(22) will be set to zero.  This may affect some results of
sound effects in programs where you want those registers to be left at some
other values.  All the other registers will be as they were last adjusted to,
so remember this if you still have a tone or noise remaining after the computer
has stopped.

     Later in this article is a table of all the sound generating keys, their
&(17) values, the resultant frequencies, and any special notes about them
(pg. 73).

     The keys that do not generate sounds are [divide], x, +, and -.  These
keys will modify the sounds created by the other keys if the modifying keys
are used just prior to the normal sound keys.

     The divide key ([division symbol]) will make the sound one octave lower
in frequency than normal.  This is done by temporarily making the master
counter &(16) count twice as far.  So while &(16) is normally at 71, for this
one note it will be set to 143.  As soon as the note has finished, &(16) will
again return to 71 unless the next note is also proceeded by a [divide sign].

     The multiply key (x) will make the sound one octave higher in frequency.
This is done by making &(16) equal 35 for the time the concerned note is
sounding at the end of which the &(16) will again return to 71.

     The plus (+) and minus (-) keys are only used in conjunction with the
numbers 1 through 7.  This was arranged so that the plus and minus sign would
be meaningful in playing musical sharps or flats in the Bally-mentioned three
octave musical scale.

     Another thing to mention is the "Note Timer" or NT.  For each number of NT
the notes played will be approximately 17 milliseconds long.  An NT=0 results
in no sound, while the maximum value of NT>255 results in about a 4.335 second
note. (0.017 x 255 = 4.335)

     The 0 is used to extend the duration of a played note by taking the note
timer and increasing it an additional NT quantity for each 0 following the note
to be heard.  For example, say we are to play a note while NT=10, and that this
note is followed by 3 zeros, the resultant NT will be 40.  After playing that
modified NT, the NT will again return to normal (10 in this example) until
called upon again.

     A funny thing about this method of extending the duration of a played note
is that you still cannot play any note longer than 4.335 seconds.  This is
because if you had a note timer extended by way of using zeros after a printed
character, and it would result in an NT>255, the final result would probably be
less than 255.  To explain what I mean, you have to know about binary numbers
and that the NT register is only 8 bits wide.  If, for example, we had an NT of
50 and that some program that we are running is to print a character followed
by 5 zeros, we would expect a temporary NT result of 300 (1+5=6, 6x50=300) but
an 8 bit register's maximum bit count is only 255 while a binary conversion of

-------------------------------- arcadian -------------------------------------
Page 72 - [...continued]

decimal 300 requires 9 bits (1 0010 1100).  The result is that only the least
8 bits (0010 1100) will be loaded into the NT register, so NT will temporarily
be 44.  This you see is a lot shorter than we had at first expected and even
shorter than the normal NT of 50.

_TUTORIAL-SUBROUTINES_
     If you have a process that you want to have repeated a number of times, it
is convenient and memory-saving to use the technique called SUBROUTINE, which
requires the commands GOSUB and RETURN. I recently received a short program
from Bret Dabel and Vince Garzoli that has this situation, and I thought that
it might be of interest to all to show how a program can be modified this way.
The program as it arrived is:

     10 A=RND(32000)                      To utilize the SUBROUTINE
     20 INPUT "PLAYER #1 GUESS:" B        command, we make the process
     30 IF A=B PRINT B, "Is RIGHT"        to be repeated into a set of
     40 IF A>B PRINT "MORE"               generalized statements and
     50 IF A<B PRINT "LESS"               them with the RETURN command.
     60 INPUT "PLAYER #2 GUESS:" B        Then whenever you wish to
     70 IF A=B PRINT B, "Is RIGHT"        perform the process, you
     80 IF A>B PRINT "MORE"               direct the machine to the
     90 IF A<B PRINT "LESS"               proper location with the GOSUB
    100 INPUT "PLAYER #3 GUESS:" B        command, and when the machine
    110 IF A=B PRINT B, "Is RIGHT"        does its job, it reads RETURN
    120 IF A>B PRINT "MORE"               which tells it to go back to
    130 IF A<B PRINT "LESS"               where it left the main program
    140 INPUT "PLAYER #4 GUESS:" B        and pick up the next line
    150 IF A=B PRINT B, "Is RIGHT"        number.  This last statement
    160 IF A>B PRINT "MORE"               is quite important.
    170 IF A<B PRINT "LESS"
    180 IF A=B GOTO 10                    As an example, lets review the
    190 GOTO 20                           Guessing Game program.  We see
                                          that the A and B comparisons
occur four times and so we can make a subroutine of them, giving them a set of
line numbers away from the main program, as:  500 IF A = B PRINT B,"IS RIGHT"
                                              510 IF A>B PRINT "MORE"
                                              520 IF A<B PRINT "LESS"
                                              530 RETURN

The program then reads:                   If by chance you have written the
                                          subroutine at lines 500-530 but later
     10 A=RND(32000)                      you have added so much program that
     20 INPUT "PLAYER #1 GUESS" B         500-530 will be buried in the program
     30 GOSUB 500                         length, you will have a problem.
     40 INPUT "PLAYER #2 GUESS" B         As the computer completes line 490,
     50 GOSUB 500                         it will search for the last value of
     60 INPUT "PLAYER #3 GUESS" B         A and B and perform the comparisons
     70 GOSUB 500                         asked for in lines 500 through 520
     80 INPUT "PLAYER #4 GUESS" B         (would you want that, then? ) but it
     90 GOSUB 500                         will HOW? when it gets to 530 because
    100 IF A=B GOTO 10                    it is not in a subroutine mode and
    110 GOTO 20                           has no place to return to.  To avoid
    500 IF A=B PRINT B, "IS RIGHT"        this, you jump around the subroutine,
    510 IF A>B PRINT "MORE"               in our case with a 490 GOTO 540.
    520 IF A<B PRINT "LESS"               Since this is a legitimate operation,
    530 RETURN                            it means therefore that the
                                          subroutine could actually be placed
anywhere within the program, and a suitable jump statement added.  Nesting of
subroutines is possible.  By this we mean that once you have gotten into the
subroutine loop, you could have another subroutine called.  The machine would
perform the second subroutine and RETURN to the next line number of the first
subroutine, and on its completion, go back to the main program. I believe that
four such 'nests' are possible in the Bally BASIC, but one has to be very care-
ful that each subroutine loop is completed - there cannot be any open loops.
Diagramatieally, the guessing game looks like this:
         10   > 500    > 40  > 500    > 60  > 500    > 80  > 500    > 100 -> 10
         20  /  510   /  50 /  510   /  70 /  510   /  90 /  510   /  200 -> 20
         30 /   520  /         520  /         520  /         520  /
                530 /          530 /          530 /          530 /

-------------------------------------------------------------------------------
Page 73 - [RESULTANT FREQUENCY chart - sideways, did not scan]

-------------------------------------------------------------------------------
Page 74 - [BLACK BOX listing by B. Reany - did not scan]

[Cleaned up BLACK BOX diagram - which had errors]          +^    ^   o
                                                    +--+--+||+--+|-+-|+--+--+
                                                    |  |  ||||  |\---+-------o
                                                    +--+--+\/+--+--+-|+--+--+
[Generic BB rules, may not apply here :]          - --->[]|  |[]|  | ||  |  |
                                                    +--+--+--+--+--+-|+--+--+
                                                    |  |  |  |[]|  | ||  |  |
[Rays from o to > went straight through]            +--+--+--+--+--+-|+--+--+
[... or were bounced around for a while]            |[]<----\|  |/---+-------o
                                                    +--+--+-|+--+|-+-|+--+--+
                                                  + -. |  | ||  || | ||  |  |
[Rays from + to > were reflected to same spot]      /--+--+-|+--+|-+-|+--+--+
                                                   L|  |  | ||  || | ||  |[]|
[Rays from -'s get absorbed and never return]       +--+--+-|+--+|-+-|+--+-^+
                                                 - ---------/|  |\---+--\| ||
[Scoring: 1 point per Ray, 5 for wrong guess]       +--+--+--+--+--+-|+-|+-|+
                                                    |  |  | .|[]|  | || || ||
[Lowest score wins, so don't just shoot all!]       +--+--+/|+--+--+-|+-|+-|+
                                                          L +        v  v  -

     BLACK BOX RULES:

  An 8 by 8 grid has a predetermined number of atoms hidden, one per square,
under the grid squares. Berthold rays will be generated after you select a
ray entry point after pressing the "1" key. R ays travel in straight lines
perpendicular to the grid edge, starting from the ray entry point, until they
are absorbed or exit from the grid. They obey the following rules:
     1. A ray entering the grid on either side of an atom on the edge of the
grid is deflected backward and away from the edge atom.
     2. A ray aimed between two atoms with an open square between them is
reflected back upon its path.
     3. A ray coming within one square diagonally of an atom is deflected away
90 degrees from that atom.
     4. A ray colliding with an atom will be absorbed, and its absorption
will be signaled upon the screen
     5. A ray emerging from the grid will signal its exit point.

  The "2" key will ask for a col (0 to 7) and row (10 to 17) and will either
mark or unmark the grid position at their intersection where you suspect an
atom is located.  The "3" key will display the grid points where the atoms
were located, those which you marked as having atoms, and will grade your
guesses, and clear the grid for the next game.  The zero key will restart the
game, but if the grid was not cleared with the "3" key, the preceding grid
atoms will not he cleared.
  After this program is loaded, the direct executed "PRINT SZ" command must
print at least 200, or the program strings will be insufficient to execute.
For this reason, closing quote marks on literals, as well as several obvious
input edits, have been deleted.

  This program is unconditionally guaranteed by the author to to smack up
against your core limitation, or double your core dumps back.

                                                Thank You
                                                 B. Reany
                                                 1106 E. Julia Dr.
                                                 Perry, Fl 32347

Wayne Dunning notes that BLACK BOX should have a comma in line 145 after the
first B and in front of the semicolon.  Bob Strand indicates that line 490
should have a M=-1 instead of M=-M.

-------------------------------- arcadian -------------------------------------
Page 75 -

_POKE-ING PROGRAM_ allows you to load machine instructions into the @ string,
which means that you can call several machine language subroutines from inside
the BASIC.  Developed by George Breadon, the program follows along with some
data to be inserted that will call up our old buddy, ARCADIAN (ref. pg. 45)

       5 NT = 0
      10 A = 20180; B=A; FOR K=0 TO 13              INPUT MACHINE INSTRUCTIONS
      20 INPUT @(K); NEXT K                         INTO @ STRING
      30 FOR K = 0 TO 13; CLEAR
      40 CY = 0;PRINT K,@(K)                        EDIT ROUTINE - HIT "STEP"
      50 D = KP; IF D=31 GOTO 80                    KEY (D=57) TO STEP THRU
      60 IF D=57 GOTO 90                            MACHINE INSTRUCTIONS.
      70 GOTO 50                                    HIT ERASE KEY (D=31) TO
      80 INPUT "CHANGE=",L;@(K)=L                   CHANGE MACHINE INSTR.
      90 NEXT K
     100 A-B; FOR K= 0 TO 13                        POKE @STRING INTO MEMORY
     110 %(A)=@(K); A=A+2: NEXT K
     120 IF @(20) = 8 GOTO 30                       HIT "GOTO" KEY TO BRANCH
     130 C=20180; GOSUB 160                         BACK T0 EDIT ROUTINE AT
     140 C=20190; GOSUB 160                         ANY TIME
     150 GOTO 120
     160 CLEAR; CALL (C); RETURN                    INITIALIZE STARTING ADDRESS
                                                    FOR SUBROUTINE 52
DATA to be inserted: This is all in machine
                     level code.                    CALL SUBROUTINE 52
   @(0) =    -43             @(7) =   27672
     1     12341               8      20200
     2     19480               9     -13871         @ 0 thru 4 go into 20180
     3      3164 Or 3159      10      21057         while @ 5 thru 13 go into
     4    -13871              11      16707         20190, two at a time
     5       -43              12      18756
     6        53              13      20033

_SOFTWARE PRODUCERS_ are invited to contact VIDEO CONCEPTS at 625 W. 53 Ave,
Anchorage Alaska, 99502, for distribution of their products thru the store
up in the cold country.

_RETURNED BALLY UNITS_ are available from V. Jupe, Star Route Box 60, Carlotta,
CA. 95528  These are working, and at less than $200.  Also some games, write.

_ADS_ start here this time:

SELL ARCADE with 4 controls, BASIC cassette and interface. BLACKJACK, BASEBALL,
RED BARON, CROSSWORDS.  Interface has jack for printer.  Reasonable Offer to
Bob Schwind 12311 W. Silver Spring Dr., Milwaukee, WI 53225 (414) 367-4804

-------------------------------------------------------------------------------
Page 76 -

_ADS_
     SELL  ARCADE complete, includes PANZER ATTACK,CLOWNS,ESCAPE,FOOTBALL,
     BASEBALL,BINGO MATH,LETTER MATCH, BLACKJACK,ETC., BASIC and CASSETTE
     INTERFACE.  Total original list price $560.  First certified check for
     $400, or best offer.  B. PERLSON 6400 N.ELM TREE RD., MILWAUKEE WI, 53217
     414-352-1331

     Quality games on C-10 cassettes: STARBLASTER (2 player spacewar) and
     HAMMURABI (you control ancient Sumeria) at $7. each, both for $12.
     Dan. Pierce 229 Orville St. Apt 1, Fairborn OH 45324

     LISTING for the game SUB SEARCH, a one-player item, at $1.25
     Marc Gladstein, 1213 1/2 S. ALFRED ST, Los Angeles CA 90035 (213)658-5804

     Available through Sebree's Computing 456 Granite Ave., Monrovia CA 91016
     Games: $3.95 - UFO BATTLE, HIT THE PEDESTRIAN, SUBMARINE MINEFIELD;
     $2.95 - MUNCH!;  $5.50 - DOWN THE TRENCH;  $8.95 - **SUPER WUMPUS**;
     $2.50 - MATH ROUTINES (calculates Sine,Cosine,Arctangent, & Square Root!).
     All programs with one page of documentation/instructions.  Send for
     descriptions.  Timothy Hays.

     A note from W&W Software that they have another cassette ready.

     SELL Bally ARCADE BPA 1100 with BASIC,FOOTBALL,BASEBALL, four other
     cassettes, tape interface $275.  Geo. Evanoff, 10028 N.E. 28th Place,
     Bellevue WA 98004  (206)827-2918

     One player game called SUBSEARCH, $1.25 for listing, only.
     Marc Gladstein, 1213 1/2 S. Alfred St. Los Angeles CA 90035 (213)658-5804


_REVIEW_ of programs has been suggested by some subscribers, who are
concerned about purchasing a 'pig in a poke'.  IF someone else is willing to
do a critical review of a program that some advertiser is also willing to
submit, I will get the two parties together and accept the review for
publication.  The opinions will be the reviewers, not mine.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, stamp licker [demotion]
3626 Morrie Dr.
San Jos, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 10] =========================
Page 77 -

September 31, 1979                                        Vol. I  No. 10

_KEYBOARD ETC., STUFF_:  Latest words on the Bally Programmable Keyboard
will be on pg. 84.
    _KEYPAD SUBSTITUTE_ originally reported on pg. 47, has been completed
by Ed. Larkin, who offers details as to how he did it in his ad this issue.
The idea provides the user with a full size keyboard to do the same
functions as the keypad, only in a more convenient form for most of us.
You still have to punch two keys to get a letter, etc, as there is no
built-in delay circuit that would add to the cost.
     _KEY/MEMORY UNIT_ mentioned on pg. 69 is getting a little closer.
I am in the process of receiving a price quotation on the following: A
memory board with 32K of RAM of which 16K is dedicated to the operating
system which will be cassette - loaded at 1200 baud (about two minutes).
Serial and parallel ports and expansion provisions to be included.
Compatibility with the Jameco JE610 keyboard is expected.  The operating
system will be very sophisticated and unique.  Details on the above are
being included in this mailing to those who have responded to my survey.
This hardware will not be generally advertised. [see note below pg. 80]

_SERIAL NUMBERS_ are being collected against the day that a use is found
for them.  There are three Model Numbers, depending on the sales outlet:
  BPA 1000 is sold by Montgomery Ward catalog [and ABA-1000-2, two controllers]
  BPA 1100 is sold through retail/TV stores [mostly Bally Professional Arcades]
  BPA 1200 was sold by JS&A  [really BL-1200 Blue badged Home Library Computer]
The only real difference between them is the logo on the plastic cover [Red for
BPA, Fun-N-Brains for BCS, and ASTROCADE's TPA].  A small difference came about
with the white case units that were marketed with only two hand controllers.

_GAME MODIFICATIONS_ An addition to SLOT MACHINE by Phil Shafer takes care
of the case where you win but are still short
                    1511 IF M<=0 M=M+N; GOTO 1515
Mike Fink says the following addition to CHECKERS will allow you to see
the move immediately
                    1615 IF T>0 GOSUB 2000
Wayne Dunning notes that BLACK BOX should have a comma in line 145 after
the first B and in front of the semicolon.  Bob Strand indicates that line
490 should have a M=-1 instead of M=-M.
SIMON corrections of pg. 45 have an inadvertent error of mine in that I
added three GOTO 170 statements and then deleted 170 !  It should be
retained     170 FC=0; NEXT X

_REVIEWS OF GAMES_ etc., was mentioned on pg. 76.  I have received a number
of names of potential reviewers so if any of you workers would like to
have your outputs reviewed objectively on the basis of such categories as -
level of challenge, originality, educational value,etc., plus some subjective
comments, send your material to one or another of the below-listed gentlemen,
and make your own arrangements.  Include all documentation,etc., that would
be sent to a purchaser.  I in turn will print the reviews editing only for
space limitations.  We are working on a form grading system and will run a
copy in the ARCADIAN for all to see.
VOLUNTEERS: Steve Wilson  18015 Sally Ave.      Cleveland OH  44135
            Don Daniels       3 Apex Rd.        Melville NY   11746
            Bill Rueger     336 Beach 38th St.  Far Rockaway NY  11691
            Phil Shafer    3708 Big Horn Trail  Plano TX      75075
            Dick Hauser     635 Los Alamos Ave. Livenmore CA  90550

-------------------------------------------------------------------------------
Page 78 -

               TUTORIAL - USING THE BALLY BASIC TEXT AREA

                           David Ibach
                           19553 Dartmouth Pl.
                           Northville, Mich. 48167
                           Sept. 3, 1979

     Now that we know where the text of our program is stored (A000 thru A707
or decimally -24576 thru -22777), there are several uses we can make of this
information:

     1. Storing data in the text
     2. Writing self-modifying code
     3. Staring machine code in the text

These uses require PEEKing and/or POKEing with the %(addr) construct as
described on page 19, (Jan. 13, 1979 "Arcadian").

     Storing data in the text may be something you want to consider as a
substitute for the DATA statement available in more powerful BASICS.  Since
the data is in the text area, it will be written on the tape when you store
your program.  Simply branch around the data in your program so BASIC doesn't
try to execute it.

     Here's an example you might find useful. Suppose you want to play a tune
in your program and you don't want to PRINT characters to do it.  Loading MU
serially with the desired tones (a series of MU=dd statements) is costly in
terms of memory used.  The string variable may not be available, or even if
it is available, it is not easy to store its values on tape.  Why not write
your tune as part of the program text.  That way you will be storing it on
tape with your program.  And since Bally Basic stores one character per byte,
you get optimum use of memory.  Try this:

      1 GOTO 5
      2 "30123123402342345060341235321
      5 NT=15
     10 FOR Y=-24568 TO -22777 STEP 2
     20 Z=%(Y)[divided by]256;IF RM=13 GOTO 50
     30 MU=RM; IF Z=13 GOTO 50
     40 MU=Z;NEXT Y
     50 NT=3;STOP

               Using the Bally Basic Text Area - Ibach - page 2

     For this to make sense, let me explain how Bally Basic stores its text.
To begin, statement numbers occupy 2 bytes of memory regardless of the number
of digits in the statement number.  However when a statement number is
referenced (as in GOTO 5 of the first line), the number of memory bytes used
is equivalent to the number of digits in the statement number.  In fact, all
keystrokes in a statement (minus the bottom row of qualifiers on your keypad)
require one byte of memory each.  Thus keywords such as GOTO and INPUT use only
one byte each.  In addition, the GO keystroke at the end of every statement
uses a byte of memory.  It is stored as a 13 (hexadecimal 0D) and explains how
the end of the song is detected in line 20 or 30.

     Here then is how the beginning of this program is stored in the text area:

     Location     Content               Comments
     --------     -------               --------
     -24576       Stmt. No. 1           Occupies 2 bytes
     -24574       GOTO                  Occupies 1 byte
     -24573       5                     Hex 35 or decimal 53
                                        represents character '5'
     -24572       GO character          Hex 0D or decimal 13
     -24571       Stmt. No. 2           Occupies 2 bytes
     -24569       " (quote char.)       Inserted so Basic could
                                          distinguish the tune
                                          from stmt. no. 2
     -24568       3 (beginning of       This location is initial
                    tune)                 Y value in stmt. 10

     Self modifying programs are fun to play with.  There are dangers involved
since the logic is more complex.  And to restart a program you'll probably have
to reload it in its original form.  Nevertheless, the technique does have its
applications.

     As an example of self modifying code, key in the following program.  After
execution notice how line 10 has changed.

     10 GOTO 20
     20 PRINT " FIRST LIST ,1:"
     30 LIST ,1
     40 %(-24573)=12342
     50 GOTO 10                                         more . . . .

-------------------------------------------------------------------------------
Page 79 -

               Using the Bally Basic Text Area - Ibach - page 3

     60 PRINT " SECOND LIST ,1:"
     70 LIST ,1
     80 STOP

     I've tried putting machine code in the text but so far I've been unable
to execute it there.  Bally Basic will honor a call to machine code in other
memory locations (eg. the line input buffer), but the keyboard locks up when
the call address is within the text area.  If anyone can shed light on this
I'd like to hear.

     In closing, just a few notes on these techniques to help you avoid
trouble:
     - Remember each PEEK or POKE references 2 bytes of memory (hence STEP 2
in line 10 of first program above)
     - Since memory addresses are expressed as negative numbers (starting with
-24576) you advance by decrementing the absolute value
     - Page 12 of the Bally Basic Hackers Guide tells you in decimal how each
character is represented internally, including the keywords
     - If the values you store in the text area are not recognizable as
characters to Basic, they will load with question marks, but the load should
be accurate.
     - If you have a program in memory and want to know the address of, say,
statement 5200, enter the following commands directly:
          > FOR N=-24576 TO -22777;IF %(N)[not equal to]5200NEXT N
          > PRINT N
     - Remember the GO character at the end of every line when counting bytes.

1 .SPACE WAR                              824 LINE S+10,T-5,4;LINE S-10,
2 . D IBACH 7-79                              T+5,1;FC=7
10 GOSUB 100                              830 FOR N=1TO 24;BOX S,T,N,N,2;
20 IF TR(1)=1GOSUB 200                        NEXT N;&(23)=0;&(21)=0
30 IF H[not equal to]0GOSUB 800           840 CX=-65;CY=40;NT-0;PRINT
40 IF JY(1)[.ne.]0G=JY(1);GOSUB 300           "         ZZZZZAP!";NT=3;
50 IF TR(2)=1GOSUB 400                        IF H=1C-C+1;B=RND (76)-38;
60 IF H [not equal] 0 GOSUB 800               GOTO 860
70 IF JY(2)[.ne.]0G=JY(2);GOSUB 500       850 D-D+1;A=RND (76)-38
80 GOTO 20                                860 GOSUB 700;H=0;RETURN
100 CLEAR ;BC=0;FC=0;N=RND (12)
    +9;C=0;D=0;GOSUB 700;FOR M=
    1TO N;X=RND (150)-75;Y=RND
    (80)-40;BOX X,Y,1,1,1;NEXT            This is a two player game.
    M;A=RND (76)-38                       Player one owns an invisible
110 B=RND (76)-38;H=0;FC=7;               space ship on the left hand
    RETURN                                side of the screen.  He can
200 H=0;G=KN(1)[divide](-3);              move it up or down by pushing
    LINE -60,A,4;MU=7;LINE 60,G,3;        his joystick forward or back.
    LINE -60,A,4;LINE 60,G,3;             When he pulls his trigger, he
    IF G<B+5IF G>B-5H=1                   shoots across the screen at
210 RETURN                                the invisible ship of player 2.
300 A=A+5*G;IF A>40A=A-5 [see note]       A shot also exposes his position
310 IF A<-40A=A+5                         on the screen.  The invisible
320 RETURN                                ship of player 2 is on the right
400 H=0;G=KN(2)[div]3;LINE 60,B,4;        side of the screen and is simi-
    MU=2;LINE -60,G,3;LINE 60,            larly controlled. The knob set-
    B,4;LINE -60,G,3;IF G<A+5             ting determines the angle of the
    IF G>A-5H=2                           shot.
410 RETURN
500 B-B+5*G;IF B>40B=B-5  [see note below]
510 IF B<-40B=B+5
520 RETURN
700 CX=-65;CY=40;PRINT C,D
710 IF (C=15)+(D=15)=0RETURN
720 NT=0;CX=-8;CY=5;PRINT
    "GAME";CX=-8;CY=-5;PRINT
    "OVER";NT=3;FC=0;BC=7;STOP
800 BC=7;&(23)=255;&(21)=255;
    BC=0;FC=0;IF H=1GOTO 810
805 BC=7;FC=7;S=-60;T=A;GOTO 815
810 BC=7;FC=7;S=60;T=B
815 BC=0;FC=0;IF T>33T=33
817 BC=7;FC=7;IF T<-34T=-34
818 BC=0;FC=0;LINE S-5,T+10,4;
    LINE S+5,T-10,1
820 BC=7;FC=7;LINE S+10,T+5,4;
    LINE S-10,Y-5,1  [see correction below]
822 LINE S+5,T+10,4;BC=0;FC=0;
    LINE S-5,T-10,1

     (corrections from vol. 2, page 4)
     SPACE WAR as printed on pg. 79 had two points needing work, writes
John Johnson.  The asterisk (*) in lines 300 and 500 should be changed
to the x for multiplication.  In line 820, the Y-5 should be T-5

     R.M.H. notes (by hand) that to continue play add:
     720 PRINT;PRINT;PRINT"PLAY AGAIN? (Y/N)";IF KP=89 GOTO 10
     730 PRINT "BYE!";STOP

-------------------------------------------------------------------------------
Page 80 -

_SPEEDUP T0 TAPE_ A note from Ed Mulholland says that increasing the
machine's speed by decreasing the Note Time will work for tape transcriptions.
Ed reduces NT to 1 in the directions to transcribe -  :PRINT;NT=1;LIST
saying that if NT is 0, there won't he any audio.  But Ed Larkin has reported
that if the NT is put ahead of the other commands, it will work for him -
NT=0;:PRINT:LIST.  See what works for your machine.

_DIVISION_ with results in non-decimal format was run by Marc Gladstein for
those who would like to see the quotient printed with the remainder
continued as a fraction.  The gist of it is -
     10 INPUT "D1=" X
     20 INPUT "D2=" Y
     30 Q= X [div] Y; R=RM
     40 PRINT "QUOTIENT = "
     50 PRINT #1,Q,;IF R PRINT #1," ",R,"/",Y

_SUBSCRIPTION RENEWAL TIME_ is coming up.  Because of the timeless(?) value of
most of the material in the ARCADIAN, and because I don't have any bookkeeping
capability (it would be nice to have a computer), all subscriptions are on a
volume basis, one year from November to October, and everyone receives all the
back issues in a lump at the time he/she subscribes.  I am now soliciting
subscriptions for Volume 2, to start in November of l979, at the rate of $10.
The issues will again be guaranteed as bimonthly, with added issues as material
becomes available, the same as was true for 1979.  I expect that with the
keyboard/memory that we are working on now will generate a lot of activity in
its own right as will peripherals.  Tiny BASIC will continue to surprise us,
and we are developing some hardware modifications to the basic machine to make
it better, so there seems to be a lot of material that will come forth.

_TUTORIAL_ on text area by Dave Ibach includes a game that sounds interesting.
I have not had the opportunity to try it out as yet.  In the second line of
Dave's tutorial is the indication of [pseudo-memory].storage being located at
-24576 thru -22777.  This serves as a correction to the table I printed on
pg. 34, "Text Area".

_DICTIONARY_ by Steve Walpole on pp. 82+ provides you with a conversion between
some commands used in other BASIC language programs and the TinyBASIC of Bally.
From a format standpoint, Steve first gives the general command and a short
statement about it, and then how to do the same thing in TinyBASIC, or as close
to it as possible.

_SAMPLE PAGE_ shown at the top of pg. 83 is probably understandable only
to those who can read assembly language.  It is my intent to have the most
interesting of these pages "transcribed" into English for the rest of us,
and also to have some programs developed utilizing these for all of us.

_SUGGESTIONS_, etc.  I have a number of programs on hand for the next issue.
My problem is the transcription of them from whatever form they are in into one
that is legible, especially after reduction (usually to 75 or 50% ).  I would
appreciate program listings to be either: typed, or clearly hand printed on a
form such as that provided by Chuck Thomka.  Most company forms have lots of
little bitty boxes that each letter/character fits into and/or colored sections
that do not make for good clear reproduction.  Please include explanations.
Anything that can be directly printed in the ARCADIAN should be typed unless
your handwriting is Spencerian or you use the Palmer Method.  If I receive
listings which have to be transcribed, they will be sent back to the
originator for proofreading after transcription/reduction.  I assume that
those that arrive all ready for printing will have been proofed.

[note: see Survey Results as "Arcadian, vol. 1, issue 10, page 80a"]

-------------------------------------------------------------------------------
Page 81 -

The following are my comments on the PX function:

The possibility of the PX function as a location sensor seems reasonable if you
only have to monitor whether a player (meaning a visible marker such as a BOX)
is at a given location or not.

I have enclosed a simple program which uses the PX(X,Y) function as a location
sensor in the manner of a trap being sprung.  Ten traps (explosive mines,
invisible enemy ships, etc.) are set randomly, and if the player moves over any
of the trap locations, he is trapped (caught, exploded, etc.).

I don't see how this function could be used in two-player games in general,
since only two conditions can exist: PX(X,Y)=0 or PX(X,Y)=1. In many games,
monitoring is needed for three functions: PLAYER #1 (black), PLAYER #2 (white),
and neither player.  This is the case with most board games.

Two-player games where both players have black markers could use PX to monitor
both players, since only one player can move at any one moment.

Also, PX could be used to monitor the intersection of two player markers if they
were reverse BOX markers.  Their intersection would then be white if the markers
are black, and the PX function would equal 0 when they intersected.

                                          Sincerely yours,
                                          [signed]
                                          Steven L. Walters

                                          556 Langfield
                                          Northville, MI 48167

PROGRAM USING PX(X,Y) AS A LOCATION SENSOR
------------------------------------------
10 CLEAR                                    _COMMENTS_
20 FOR N=1 TO 19 STEP 2               Sets 10 location sensors at
30 @(N)= RND(100) - 50                PX (@(N), @(N+1))
40 @(N+1)=RND(60) - 30
50 NEXT N

60 (see optional section)

90 X=-70; Y=0                         (Start location for box marker
100 X=JX(1)x3+X
110 Y=JY(1)x3+Y
120 IF X< -70 X=-70                   Sets movement limits on box marker
130 IF X> 70  X=70
140 IF Y< -35 Y=-35
150 IF Y> 35 Y=35
160 BOX X,Y,5,5,1                     displays box (player marker)

200 FOR N=1 TO 19 STEP 2              Test if marker is over any
210 IF PX( @(N),@(N+1) )=1 GOTO 300   PX sensor location
220 NEXT N
230 BOX X,Y,5,5,2
240 GOTO 100                          Erase marker, repeat
300 BOX X,Y,7,7,3
310 BOX X,Y,9,9,3                     Visual feed back for sensor response
320 PRINT "CAUGHT!                        (trap appears surrounding
330 STOP                                                marker)

Option: to display sensor locations visually as marker is moved about:

Add the following:

60 GOSUB 400

400 FOR N=1 TO 19 STEP 2
410 BOX @ (N), @ (N+1), 11, 11, 1
420 BOX @ (N), @ (N+1), 13, 13, 3
430 NEXT N
440 RETURN

-------------------------------------------------------------------------------
Page 82 -

                           DICTIONARY of TRANSLATIONS
                           from BASIC to Bally BASIC

AND - The AND statement allows for more than one condition to be placed in a
single IF statement. [MSBasic or other]

10 IF A=0 AND B=0 GOTO 120

The program will branch to 120 only if A=0 _AND_ B=0.  With Bally BASIC use a
second IF statement in the place of AND or put the conditions in parentheses.

10 IF A=0 _IF_ B=0 GOTO 120
   OR
10 IF (A=0)+(B=0)=2 GOTO 120

(See page 52)

*************************

ASC-CHR$ - The ASC function converts any given character into its ASCII code
number while the CHR$ function does just the opposite, converting an ASCII
code number into its equivalent character.

10 A=ASC(A)
20 PRINT A
30 A$=CHR$(65)
40 PRINT A$
C:\RUN
65
A

[note: command prompt "C:\" shown for MSBasic and '>' for Bally Basic examples]

With Bally BASIC, the advantage of turning a letter into a number is because
you can't store a letter in a string or counter only a number. Then by using
the TV function you can call upon a number to be changed into a letter and
displayed on the screen.  Use the KP function instead of ASC:

10 K=KP
20 PRINT K
30 TV=K
>RUN
    65
A

In line 10 of the example, the computer waits until a character is typed in on
the keypad.  Then automatically converts that character into its ASCII code
number and stores it in the K counter.  In line 20 the computer prints the
value of K and in line 30 the computer converts the value of K into its ASCII
character and displays it on the screen.  If you do not want to have to input
the same letter every time you run the program look up the ASCII code number
you want on page 16 in the Decimal column and store that number directly in
the counter or string.

10 K=65
20 PRINT K
30 TV=K
>RUN
    65
A

*************************

INT - This function removes the decimal from a number and returns only the
whole number.

10 A=4 [divided by] 3
20 PRINT A
30 PRINT INT(A)
C:\RUN
1.3333332
1

Bally BASIC does this automatically so INT or anything else is not necessary.

10 A=4 [divided by] 3
20 PRINT A
>RUN
     1

*************************

LET - LET assigns a variable or string to any giver value.

10 LET A=45

LET is not necessary with Bally BASIC.  Just omit the statement LET.

10 A=45

*************************

NOT - NOT is used with the IF statement.

10 IF NOT A GOTO 120

If A=0 the program will branch to 120.  If A equals any other positive or
negative number and the program will resume with the next line number.
With Bally BASIC use:

10 IF A=0 GOTO 120

*************************

ON-GOSUB - This statement is used for multiple branching.

10 ON A GOSUB 120,200,340,500

In the example, the program will GOSUB 120 if A=1; 200 if A=2;
34D if A=3; and 500 if A=4.  There are a couple of ways this can be done with
Bally BASIC.  The first one is where you have to use many lines.

10 IF A=1 GOSUB 120
20 IF A=2 GOSUB 200
30 IF A=3 GOSUB 340
40 IF A=4 GOSUB 500

This takes up too many bytes to be practical so there is a better way.  Space
the line numbers of the subroutines evenly apart (200 in the example) so that\
the product of Ax200 will guide the program to the correct line.  Try the
sample program below:

5 CLEAR
10 A=0
20 IF JY(1)=1 A=1
30 IF JY(1)=-1 A=2
40 IF JX(1)=-1 A=3
50 IF JX(1)=1 A=4
60 CY=O;CX=0
70 IF A=0 PRINT "*";GOTO 10
80 GOSUB A [multiply] 200
90 GOTO 10
200 PRINT "[up ]";RETURN
400 PRINT "[down ]";RETURN
600 PRINT "[left ]";RETURN
800 PRINT "[right ]";RETURN

Move the joystick to control the arrow.

*************************

ON-GOTO - Works the same way as ON-GOSUB
except using the GOTO statement.

*************************

OR - Works the same way as AND, allowing more than one condition to be placed
in a single IF statement.

10 IF A=0 OR B=0 GOTO 120

Except with the OR statement the program will branch to 120 if A=0 _OR_ B=0 as
with AND the program would branch only if A=0 _AND_ B=0.  With Bally BASIC use:

10 IF (A=0)+(B=0) GOTO 120

(See page 52)

*************************

READ-DATA - This statement is used when large amounts of variables and/or
strings are to be assigned values.

10 READ A,B,C,D
20 DATA 25,40,44,60

When the program reaches a READ statement, the computer searches for the first
DATA statement, takes the first value of that statement and assigns that value
to the first variable of the READ statement.  If there are any more variables
in that READ statement the computer will then search for the _second_ value of
the DATA statement and assign that value to the _second_ READ variable. etc.
Therefore, the example, A=25; B=40;C=44:and D=60.  To do this with Bally BASIC,
each variable will have to be assigned individually but they can be placed on
the same line.

10 A=25;B=40;C=44;D=60

-------------------------------------------------------------------------------
Page 83 -

REM - REM stands for "remark" and it means just that.  It has no special
function except to provide an in-program documentation of the program.

10 REM THIS PROGRAM SIMULATES
20 REM NEGATIVE GRAVITY IN SPACE

With Bally BASIC just use a period (.) in the place of REM.

10 .THIS PROGRAM SIMULATES
20 .NEGATIVE GRAVITY IN SPACE

Since the Bally system does not have alot of memory, it is best to leave out
these lines unless your program is short enough to allow it.

*************************

TAB - TAB refers to how many spaces from the left side of the screen to print
before printing the word(s) following it.

10 PRINT TAB(5) "COMPUTER"

With Bally BASIC enclose the number of spaces in the quotes along with
the word to be printed or use the CX function.

10 PRINT "     COMPUTER"
2C CX=-47;PRINT "COMPUTER"
>RUN
     COMPUTER
     COMPUTER

To determine the value of CX, start with -71 for 1 space and add 5 for
each additional space.  So for 2 spaces CX=-65, 3 spaces CX=-59, etc.

*************************

     SYMBOL TRANSLATIONS

Multiplication sign - * to x
Division sign       - / to [division sign]
String symbol       - $ to @
Colon (:) - This symbol is used in most BASICS to allow more than one command
per line.  With Bally BASIC the semi-colon (;) is used.  And in other versions
it can be a slash (/) or back-slash (\).  Be careful not to mistake these for
a division sign.

*************************

THEN                - This means the same as GOTO.  It is usually found in
an IF statement.  Just replace THEN with GOTO.

*************************
End of BASIC TRANSLATIONS
*************************

This is a page taken from a document that I have which includes about 140 pages
of routine descriptions similar to the sample, plus about 200 pages of object
codes for apparently all the routines in the machine.  If you are interested
in the contents of this volume, drop a line or call me and we'll discuss it.

[note: taken from Dave Nutting Associates' "Nutting Manual", aka "DNA bible"]
[includes the same typos - should be SYSSUK DISTIM and register C for Options]

SCREEN ALPHANUMERIC   DISTIM
DISPLAY TIME

Calling Sequence:       SYSTEM  DISTIM
                             or
                        SYSSUK  DISNUM
                        DEFB    (X co-ordinate)
                        DEFB    (Y co-ordinate)
                        DEFB    (options)
Arguments:              DE = X,Y co-ordinates
                        X  = Options  (see note below)
                        IX = Alternate Font Descriptor  (not loaded)
Outputs:                DE = Updated

Description:
This routine displays the system time (GTMINS, GTSECS) at the co-ordinates
specified in the form MM:SS, where M=minutes, S=seconds.  Seconds are optional.

Notes:
The small character set is used and one level of enlarge factor is permitted.
Options are the same as the alphanumeric display routine except that bit 7=1
to display colon and seconds; bit 7=0 to suppress colon and seconds.

-------------------------------------------------------------------------------
Page 84 -

_ADS_

2-player BATTLESHIP; 1 player JOTTO/SENSOR (two 120-word versions available -
general words, and expert); variable size/difficulty; MASTERMIND.  All for $6
your tape or $7 his tape.  Don Daniels, 3 Apex Rd., Melville NY 11746

Bally BASIC $30: Interface $30; Brickyard/Clowns, Blackjack/Poker, SpeedMath,
Seawolf/Missile @$15 ea.  8 Handcontrollers @$5 ea.  J. Jones, 723 S. Gardens,
Rialto CA 92376

LISTINGS only for COMPUTER CRAPS $2; SLOT MACHINE $2; RUSSIAN ROULETTE $1;
SPELL'N'SCORE $1.50; CHECKBOOK BALANCER $1.50 or $7 for all.  Also _Service_
on hand controllers.  S. Walpole, 11480 Beirut Ct. #204, Sappington MO, 63126

KEYBOARD in parallel with existing keypad: plans, specifications and photos
$10.ppd.  Ed Larkin, Outlet Rd. Hallowell, ME 04347

HARDWARE ITEM! - JOYSTICK CONTROLLER, a true joystick (2-100K pots),
360 deg. rotation, with two RS-232 connectors, black plastic case, and
_10_ MICROSWITCHES!!  This is a multi-controller device, comes with software
on tape W/listing & instructions on writing your own programs for it.
$34.95 (+$3 p&h) available Oct 22.  Write for details.  Also, _XY_ TUTORIAL
package, for exclusive controlling of graphics, _12_ pages +software on tape
with _SIX_ programs, listings included. $9.95.  NEW ITEMS - SEBREE'S COMPUTING,
TIM HAYS, 456 Granite, Monrovia CA, 91016

DEALER selling out all stock on Bally-games, Basic, etc., all items at our
original cost.  Video Environment +, Inc., 580 New London Rd., Latham NY 12110

BALLY ADD-ON - I've kept this space open hoping for a last-minute official
word, but I did not get any and time is short.  What I've heard from various
unofficial sources is that the FCC did allow the TI request which provides
relief in the TVI areas (the news release has yet to come out).  Whether
Bally will react to this in a positive manner is a question.  My sources are
all down and think that chances are very slim that any Level III hardware will
actually be produced.  Many dealers have given up the line, as have some
distributors.  I hope to have some definitive news in the next issue, which
by the way will be the last of Volume I.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, typist
3626 Morrie Dr.
San Jos, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================= [arcadian Vol. 1, Issue 11] =========================
Page 85 -

Volume I                       Oct 31, 1979                     Number 11

_SUBSCRIPTION_ for 1980 is $10.  Now that this issue is out, the address label
program will be reset to zero, so take heed.  We have started to translate the
HANDBOOK (page shown on pg. 83) so those outputs will take prominent positions
in next year's issues.  And there will be material on utilization of the
keyboard/memory unit I'm having developed.  Plus programs and who knows what?

_REVIEWS_ of 'commercial' programs start in this issue with a comprehensive
output by Dick DeForest.  We have received a suggestion that it might be useful
to some to have reviews of the Bally games.  As the Bally distribution shrinks,
mail order becomes the mode of purchase.  Prospective purchasers would like to
know the worth of the Bally outputs, and if anyone could review these, it would
be a service to those distant from a dealer.

_SOUTHERN INDIANA_ subscribers are urged to contact Dave Stocker or Guy
McLimore 579-7396 if they are interested in a local user group.

_ASCII KEYBOARDS_ have been successfully interfaced to the Bally Arcade,
report two subscribers.  In brief, these keyboards replace cassette tape as
the BASIC input source.  The schemes differ slightly in that one of them
(Jerry's) has simulated the Kansas City Standard in order to transfer the ASCII
keyboard data, and the other (Ed's) bypasses the Kansas City Standard phase
and provides a serial data stream from the ASCII keyboard to the audio cassette
adapter.  Both schemes require some audio cassette hardware modifications as
     well as some circuit assembly.
They both provide the look and feel of keyboard input for all except Basic
"Key" words (LET, FOR, etc.)  These key words are generated from the ASCII
keyboard by depressing a lower-case alpha character (e.g. PRINT is entered by
typing a lower-case t).
For further information, contact the authors directly:
     Jerry Tindle                    Edmund Mulholland
     8414 Staunton                   Route 14, Box 424 H
     Austin TX 78758                 N.wilkesboro, NC 28659
The above was written by Tom Wood, based on data submitted by Jerry and Ed.

_ANOTHER NEWSLETTER_ You will note an ad by Fred Cornett who is proposing a
new source of information for the Bally.  We certainly need all of the software
we can get, for review and analysis of the techniques used in a program is
a self-improvement scheme.  However, I don't know if there is enough market
out there for a commercial newsletter-type operation such as Fred is proposing.
I haven't seen any of the material he discusses in his prospectus, which
outlines some ambitious goals.

_BALLY GAMES_ should have two new members in the immediate future - PINBALL
(or BALLY PIN) and SPACE INVADERS should be available at $24.95.

_RESEQUENCING_ program by Ron Schweitzer is really a renumbering scheme to be
used when you finish up a program and want to have a nice sequence of lines
that are a constant interval apart (like 5, 10, 15, 20, etc).  Dick Houser
has gone over the program and written some comments about it.

_PA-1 SERVICE MANUAL_ is being reprinted by Bally, which is why a couple of
dozen subscribers are patiently waiting.  All other orders for printed material
have been sent out.

-------------------------------- arcadian -------------------------------------
Page 86 -

  _FIRST REVIEW_ received from Richard DeForest.  We are working on a
  standardized form and will have it in the next issue.

Sebree's Computing, T.Hays - programer
Program games are, UFO BATTLE, DOWN THE TRENCH, HIT THE PEDESTRIAN, SUBMARINE
MINE FIELD, MUNCH AND SUPER WUMPUS.  Also submitted was MATH ROUTINES.

Received all of the above on two tapes.  Neither tape would load into my
machine as readable programs until I rerecoarded them with another tape player
into my tape player.

UFO BATTLE - Game has great sound effects and screen changes.  The explosions
are the key to this program.  Do not cheat by keeping TR(1) pulled.  I did
and ended up with a score of 29,855 on the third try!!!

DOWN THE TRENCH - In my opinion this is the best of the games.  The program
demands dexterity, perseverance and concentration to succeed in the mission.
Outstanding sound and 3D graphics.  A very good program utilising the memory
of the BALLY.

HIT THE PEDESTRIAN - Another 3-dimensional game to keep you on your toes.
The man falls apart if you move KN(1) to fast.  Make the below changes and
you will stop this situation and have about 200 bytes left or 11% of the
memory to improve the sound or graphics
  205 Q=1000;GOSUB Q
  210/550 change all lines with BOX KN(1) [div] 2+M,-,-,-,-  to read
                 BOX Z(+ or - if called for),-,-,-,-
  290, 375, 452, 490 change to  CLEAR ;GOSUB Q
 1000 Z=KN(1) [div] 2+M;RETURN

SUBMARINE MINEFIELD - Moving the sub through 230 mines is tricky and if you
add 3 depth charges or scanning mines you have lots of problems.  This one
has a realistic sea bottom that is alive with creatures (the stack being
manipulated causes this illusion).  Find 14 bytes and change line 52 to read
BOX 0,40,160,1,1;FOR A=1TO 230 to show sea level.  IF PX(-,-) described in
Oct. ARCADIAN was used to detect for mines.

MUNCH - This one is full of suspense.  It has enough memory left to add a
search routine to check that at least one bit is removed from the screen or
to subtract points from the player.

SUPER WUMPUS - If you have never hunted Wumpi, then try this game.  Excellent
use of different sound effects and use of dual sound effects are unique.
This program has two listings.  The first is to instruct the player and the
second is the game.  This saves the memory for the many branches, subroutines
and sound effects.

MATH ROUTINES - For 3-dimensional graphics.  This program calculates sine,
cosine and arctangent more than accurate enough for the integer basic of
the BALLY.  The square root has a fast and a slow version depending on the
accuracy needed.

SUMMARY - All programs come with listings and complete documentation.
They use all of the functions of the BALLY BASIC and have several unique
sound effects.  Instructions are duplicated in listing and program and this
uses up memory which could be put to better use.

-------------------------------- arcadian -------------------------------------
Page 87 - [MEMORY ADDRESSES and BALLY TINY BASIC - sideways, did not scan]

-------------------------------- arcadian -------------------------------------
Page 88 -

_POWER ON INDICATOR_ was suggested by Ed Mulholland, and the following sketch
comes from Chuck Zellers showing how it can be done.  The hole in the top cover
should be big enough so that the LED protrudes, and is not constrained (so the
cover is easily replaced).  The legs of the LED are strong enough for this.
Once you solder the LED/resistor across capacitor C9, position the LED verti-
cally and put a dab of vaseline, heat sink grease, etc., on the tip, then lower
the cover.  The grease will make a mark on the cover, telling you where to
drill the hole.  Radio Shack (ugh) parts are 276-041 LED, and 271-030 resistor,
4.7Kohm, 1/4 watt. (almost any value resistor will work).  I prefer PolyPaks
at about 25% the cost.

   __---_--
   |  _    \
---+-+ |    |       DRILL HOLE
---+-+ |     \      IN CASE FOR
---+-+ | J1   |     LED
---+-+ |      |       \
---+-+ |      |        \       ________---__---___==========___---__---_______
---+-+ |       \        \     |\|___________________________________________|/|
---+-+ |        \        \    |||                                           |||
---+-+ |         |        \   |||                                           |||
---+-+ |         |         \  |||                                           |||
---+-+_|         \          \ |||                                           |||
   |              |          \|||___________________________________________|||
   | +-----------  \          \| \                       ===========       / ||
   | |          <   |         |\ |----------------------------------------|  ||
   | +-+ HEAT   (   |         ||\|           _________________________    |  ||
   | | | SINK   |   \_        || \           |.... | _______________ |    |  ||
   | +-+         \    \       || |\          |.... | |             | |    |  ||
   | |           /    '  _    || | \         |.... | |             | |    |  ||
   | +-----------        /|   || | _\|_      |.... | |_____________| |    |  ||
   |                  /\/     || |   [_]     |.... | __    _____     |    |  ||
   |  *   4.7K       /        |||            |.... | R-    Eject     |     | ||
   |  |<---NNN----||__    \   |||            -------------------------     | ||
   | | |         _||__)   |   |/---------------------------------------------\|
   | | | Cap.#9 | ||      \    -----------------------------------------------
   | |_|        |          )
   |  |<--------' (watch   |
   |  *             LED    /   [drawring "borrowed" from .faq - was Isometric]
   |   [+]  [-]  polarity) |
   +-----------------------'

_TELEPHONE COUPLER_ mentioned previously (pg. 58) apparently will not work with
GTE telephone equipment.  Chuck Zellers proposes using an 8 ohm to 2Kohm
impedance matching transformer with the speaker on the 8 ohm side.

_MICROTREK_ by Bill Andrus (7034 Thomas Dr., N.Highlands, CA 95660) is a very
small but interesting version of the Star-Trek game.  This version was
originally shared by the North Carolina TRS-80 User Group.  In playing, watch
your energy level and remaining time.
   Command Summary: 1) Move to Sector (row,column) - On an 8 x 8 quadrant of
                       sectors, you can move to any legal, unoccupied sector.
                       If you are adjacent to a Starbase, you are docked,
                       restoring your energy and in a safe haven from which
                       to fire.  If either sector command is zero, the
                       command is cancelled.
                    2) Move to a New Quadrant - extends search for Klingons
                       and Starbases.
                    3) Fire on Sector (row,column) - Watch energy.  Again, if
                       either value entered is zero, the command is cancelled.
                    4) Sensor Report (of current quadrant):  * are stars;
                       B is StarBase; K is Klingon; and E is Enterprise
                    5) Status Report: These are optional, upon-request displays
An extended version is available from Bill at $1.50 your tape, $3.50 on his.

-------------------------------- arcadian -------------------------------------
Page 89 - [MICROTREK program listing - sideways, did not scan]

-------------------------------- arcadian -------------------------------------
Page 90 -

_RESEQUENCING_  Program by Ron Schweitzer
     This program will renumber a Bally BASIC program and print the renumbered
program on tape. It will fix GOTO and GOSUB as long as they are not computed,
i.e. GOSUB C, where the C will not be changed.  However a GOSUB 120+C will be
changed if there is a line number 120.  It is slow, but still faster than
editing.  This program is 473 bytes long as written here but can be shortened
to ...
     426 bytes by deleting Line 20000
     377 bytes by above and deleting Line 20050
     366 bytes by above and changing Line 20040 to INPUT".FL#"O,".SP"G;:PRINT
     349 bytes by above and changing Line 20080 to NEXT A;PRINT ":RETURN" ;STOP
This program requires a "@(X)" for every line in storage.  The resequence
program is renumbered along with the object program.  Spacing between the two
programs can be accomplished by adding some dummy lines after the object
program.

Notes on Ron's program, by R.M. HOUSER [ to save the program, ?? goes where ??]

First key in the program of the byte length that you want. Then dump this on
a cassette and plan on saving it.  Now RESET the BALLY, and load the object
program into memory from its tape.  When finished, load the resequence program
after it.  This can only be done if there is enough memory space and you do not
have a conflict in line numbers.
Now add Line   1 GOTO 20000  (GOTO 20010 if 20000 has been deleted per above)
Now push WORDS RUN GO and the CRT will show "RUN".  After a short wait . . .
The computer will ask for 'START NO'.  Put in 0, this will automatically set
                             'FL#'
and get rid of GOTO 20000 (or 20010) later on, and make the first line be
0+Spacing.  At this time start the tape recorder with a new tape to load the
renumbered program on.  The computer will now ask for 'SPACING' and enter the
line interval you wish . . .                             '.SP'
You will now see the object program be renumbered on the CRT.  When you see
that the renumbering has reached the resequence program (20000 or 20010)
stop the tape recorder to save having delete these lines later.
_NOTE_ ::: The program stored in the Bally memory is still the old line
numbered program.  The renumbered program is on the tape. If you now RESET the
Bally and load the tape, you will see some garbage at the beginning that will
drop out later when the program is run.  List the program and delete any lines
of the resequence program.  Load the program on a clean tape.  If you have a
long program, you will probably have to break it into two, and some of the GOTO
and GOSUB may have to be edited by hand. : : : Thanks for this program Ron.

_POOR RESPONSE_ from Apple TV and Computing [name cut] 2606 S. Robertson Blvd,
LA 90034 has been reported.  If you have had any negative dealings with this
company, drop a line to R. Tietjens, 3226 E 1/2 Road Rte 2, Clifton CO 81520.

_A CLUB_ has been started in the Grand Junction area that meets at Mr. [Rich]
Tietjens' house on the second Tuesday of the month at 7pm.

_CHECKERS CORRECTION_ by the author, John Collins -
  line 260 should read    S=U-B+F; IF @(S)=3 J=1  [correction stands corrected]
  line 620 should read   IF @(U+F)=3 IF @(U+C-F)=1 RETURN

-------------------------------- arcadian -------------------------------------
Page 91 - [RESEQUENCING program listing by Ron Schweitzer - did not scan]

[RESEQUENCING program error report and following notice - did not scan]

_GROUP MEETINGS_ are being held at Bruce DeVries' home, 2036 North Highland,
Apt. B, Orange CA (714) 637-5700 reports Bob Moore.  These are held on the
second Wednesday of the Month.

-------------------------------------------------------------------------------
Page 92 -

_ADS_

 W&W report that they now have seven tapes available with five programs each,
and $10 per tape.  See last issue for address.

DEALER SELL-OUT a success. We still have some items in stock, selling at cost.
As a special offer to ARCADIAN subscribers we will special order any Bally
products at a very special price.  Send stamped self addressed envelope (SSAE)
for price list to VIDEO ENVIRONMENT +, INC 580 New Loudon Rd. Latham NY 12110

A program & information exchange has been established for "Arcade" users. For
further information, send SASE to. F. Cornett, 6115 Clybourn #25, North
Hollywood, CA 91606

[Another Ad in a different font and too light to scan]

INVASION is offered by George Collins, 30 Sierra Ave., Piedmont, CA 94611 on
a tape for $5 with documentation.

_REVIEW OF THE BALLY SYSTEM_ is contained in an article by Dick Nitto in the
November issue of KILOBAUD

More Ads

Programmer Wanted: Business programs written for small quick-printer.
Herb Weintraub, Instant Printing, 205 North Tradd St. Statesville, NC 28677

FREE shipping on any order and 10% off any orders over $50.  Complete line
of Bally products.  Also Arcadian software (? - rf) for sale or trade.
Winsor Computers, 466 Selfridge Dr., Colorado Springs CO 80916 (303) 596-4921

DIGITRENDS Inc., 1813 E. 12 St., Cleveland OH 44144  are still carrying the
complete software/hardware line in the Ohio area.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ [fold on the dotted line] _ _ _ _ _ _ _ _ _ _ _ _ _

ARCADIAN                                          [Place US postage stamp here]
Robert Fabris, tired [ha, ha]
3626 Morrie Dr.
San Jos, CA 95127

          ===========
          First Class             To: [Address label goes here]
          ===========

========================== [end of arcadian Volume 1] =========================
